Python 의 키워드 nonlocal 과 global 의 성명 과 해석
다음 코드
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 은 함수 류 의 변수 가 아 닌 전체 환경 에서 의 변수 에 작용 합 니 다.총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.