Python에서 비로컬 및 글로벌 키워드 선언 및 구문 분석 소개

高洛峰
풀어 주다: 2017-03-13 09:29:11
원래의
1664명이 탐색했습니다.

이 글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()에서만 유효한 것이 아니라 전체 대형 함수에서도 유효한 것으로 선언됩니다.


global

그래도 마찬가지입니다. 예를 살펴보세요.


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
로그인 후 복사
global은 함수 클래스의 변수가 아닌 전체 환경의 변수에 대해 작동합니다.

위 내용은 Python에서 비로컬 및 글로벌 키워드 선언 및 구문 분석 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿