이 글Python의 nonlocal 및 global 키워드 선언 및 분석은 이를 매우 자세하게 소개하고 있어 필요한 모든 친구에게 도움이 될 수 있다고 생각합니다. 와서 우리와 함께 살펴보세요.
1. Python의 전역 및 비지역 선언
다음 코드
a = 10 def foo(): a = 100
foo()를 실행한 결과 a는 여전히 10입니다
함수에서 변수에 할당 , 변수는 항상 이 함수의 로컬 네임스페이스에 바인딩됩니다. 이 동작은 global 문을 사용하여 변경할 수 있습니다.
>>> a 10 >>> def foo(): ... global a ... a = 100 ... >>> a 10 >>> foo() >>> a 100
이름을 파싱할 때 먼저 로컬 스코프를 확인한 후, 외부 중첩 함수 레이어로 정의된 스코프를 안쪽에서 바깥쪽으로 확인하세요. 찾을 수 없습니다. 전역 명령 공간과 내장 네임스페이스를 검색하세요.
변수를 레이어별로 조회할 수 있지만 ..python2는 가장 안쪽 범위(로컬 변수)와 전역 명령 공간(gloabl)만 지원합니다. 이는 내부 함수를 의미합니다. 예를 들어 다음 코드는 작동하지 않습니다.
def countdown(start): n = start def decrement(): n -= 1
python2에서는 값을 수정하는 것이 가능합니다. 목록 또는 사전 Python3에서는 nonlocal 문
def countdown(start): n = start def decrement(): nonlocal n n -= 1
를 사용하여 수정을 완료할 수 있습니다. 2. Python 비로컬 및 전역 키워드 구문 분석
nonlocal
우선 클로저에 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 키워드를 추가하세요. 선언하세요. 이것은 함수 안에 중첩된 함수입니다. nonlocal을 사용하면 변수가 중첩된 함수 inner()에서만 유효한 것이 아니라 전체 대형 함수에서도 유효한 것으로 선언됩니다.
그래도 마찬가지입니다. 예를 살펴보세요.
x = 0 def outer(): x = 1 def inner(): nonlocal x x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
위 내용은 Python에서 비로컬 및 글로벌 키워드 선언 및 구문 분석 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!# inner: 2
# outer: 2
# global: 0