Python 의 키워드 nonlocal 과 global 의 성명 과 해석

1.Python 에서 global 과 nonlocal 성명
다음 코드

a = 10 
 
def foo(): 
 a = 100 
실행 foo()결과 a 아니면 10
함수 에서 변수 에 대한 할당,변 수 는 이 함수 의 부분 네 임 스페이스 에 연결 되 어 있 으 며,global 문 구 를 사용 하면 이러한 행 위 를 바 꿀 수 있 습 니 다.

>>> a 
10 
>>> def foo(): 
...  global a 
...  a = 100 
... 
>>> a 
10 
>>> foo() 
>>> a 
100 
이름 을 분석 할 때 먼저 부분 적 인 역할 도 메 인 을 검사 한 다음 에 내부 에서 외부 내장 함수 가 정의 하 는 역할 도 메 인 을 검사 합 니 다.전체 명령 공간 과 내 장 된 네 임 스페이스 를 찾 을 수 없습니다.
변 수 를 층 층 이 밖으로(위)찾 을 수 있 지만!..python 2 는 가장 안쪽 역할 영역(부분 변수)과 전역 명령 공간(gloabl)만 지원 합 니 다.즉,내부 함수 가 외부 함수 에 정 의 된 부분 변 수 를 다시 할당 할 수 없습니다.예 를 들 어 아래 코드 는 작 동 하지 않 습 니 다.

def countdown(start): 
 n = start 
 def decrement(): 
  n -= 1 
python 2 에서 해결 방법 은 목록 이나 사전 에 수정 값 을 넣 을 수 있 습 니 다.python 3 에 서 는 nonlocal 성명 을 사용 하여 수정 할 수 있 습 니 다.

def countdown(start): 
 n = start 
 def decrement(): 
  nonlocal n 
  n -= 1 
2.Python nonlocal 과 global 키워드 분석
nonlocal
우선,nonlocal 키 워드 는 패키지 안에 정의 되 어 있 음 을 명 확 히 해 야 합 니 다.다음 코드 를 보십시오.

x = 0
def outer():
 x = 1
 def inner():
  x = 2
  print("inner:", x)

 inner()
 print("outer:", x)

outer()
print("global:", x)
결실

# 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)
결실

# inner: 2
# outer: 2
# global: 0
차이 점 보이 시 나 요?이것 은 함수 안에 함 수 를 하나 더 끼 워 넣 었 다.nonlocal 을 사용 할 때 이 변 수 는 내장 함수 inner()에 만 있 는 것 이 아니 라 는 것 을 설명 합 니 다.
효과 가 있 는 것 이 아니 라 전체 큰 함수 에서 모두 효과 가 있다.
global
마찬가지 입 니 다.예 를 들 어 보 겠 습 니 다.

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 은 함수 류 의 변수 가 아 닌 전체 환경 에서 의 변수 에 작용 합 니 다.
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기