UnboundLocalError in Closures: An Analysis
UnboundLocalError는 함수 코드 내에서 사용된 변수가 로컬, 전역 또는 다음과 같이 정의되지 않은 경우 발생합니다. 비로컬 블록의 일부. 다음 코드를 고려해보세요.
counter = 0 def increment(): counter += 1 increment()
이 코드를 실행하면 UnboundLocalError가 발생합니다. 왜 이런 일이 발생합니까?
Python의 변수 범위 이해
Python은 할당에 따라 변수 범위를 동적으로 결정합니다. 변수가 함수 내에서 할당되면 해당 함수에 대해 지역적인 것으로 간주됩니다. 이 예에서 increment() 내의 할당 counter = 1은 암시적으로 counter를 해당 함수에 대해 로컬로 정의합니다.
로컬 변수와 전역 변수
Python은 로컬 변수와 로컬 변수를 구별합니다. 전역 변수. 전역 변수는 모듈 수준에서 선언되며 프로그램 전체에서 액세스할 수 있습니다. 반면에 지역 변수는 함수 내에서 생성되며 해당 함수 내에서만 존재합니다.
우리의 경우 counter는 전역적으로 정의되지 않습니다. 이 오류는 Python이 할당되기 전에 increment()의 로컬 범위에서 counter 값을 읽으려고 하기 때문에 발생합니다. 따라서 UnboundLocalError.
오류 해결
이 오류를 해결하려면 다음 중 하나를 수행할 수 있습니다.
위 내용은 함수 내부의 `counter = 1`이 Python에서 `UnboundLocalError`를 일으키는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!