Lambda 함수에서 변수 캡처
루프 내에서 람다 함수를 사용할 때는 변수 범위를 이해하는 것이 중요합니다. 지역 변수를 복사하는 일반 함수와 달리 람다 함수는 이를 참조합니다.
주어진 코드를 고려하세요.
<code class="python">for m in ('do', 're', 'mi'): funcList.append(lambda: callback(m))</code>
여기서 람다 함수는 바깥쪽 범위에서 m 값을 캡처합니다. 그러나 루프가 완료된 후 m은 마지막 값('mi')을 유지합니다. 각 람다 함수가 호출되면 이 공유 m 변수를 참조하여 "mi"가 여러 번 출력됩니다.
이 문제를 극복하고 각 람다가 고유한 m 값을 캡처하도록 하려면 " 기본 인수":
<code class="python">for m in ('do', 're', 'mi'): funcList.append(lambda m=m: callback(m))</code>
m을 동일한 이름의 기본 매개변수로 지정하면 각 람다는 변수의 자체 인스턴스를 캡처하여 예상되는 출력을 보장합니다.
"do"
"레"
"미"
위 내용은 루프의 Lambda 함수에서 변수를 올바르게 캡처하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!