우선 클로저 내부에 nonlocal 키워드가 정의되어 있다는 점을 분명히 해야 합니다. 다음 코드를 살펴보세요.
x = 0 def outer(): x = 1 def inner(): x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
Result
# inner: 2 # outer: 1 # global: 0
이제 클로저에 nonlocal 키워드를 추가하여 선언합니다.
x = 0 def outer(): x = 1 def inner(): nonlocal x x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
Result
# inner: 2 # outer: 2 # global: 0
global여전히 동일합니다. 예를 살펴보겠습니다.차이점이 보이나요? 이는 내부에 함수가 중첩된 함수 입니다. nonlocal을 사용하면 변수 가 중첩 함수 inner()뿐만 아니라 전체 대형 함수에서도 유효하다고 선언됩니다.
x = 0 def outer(): x = 1 def inner(): global x x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
# inner: 2 # outer: 1 # global: 2
global은 다음의 변수를 기반으로 합니다. 전체 환경은 함수 클래스의 변수 대신 함수 클래스의 변수에 따라 작동합니다.
위 내용은 Python 비로컬 및 전역 키워드 구문 분석 지침의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!