>  기사  >  백엔드 개발  >  Python의 nonlocal 키워드

Python의 nonlocal 키워드

高洛峰
高洛峰원래의
2016-10-20 09:42:532349검색

이 기사에서는 "Python의 클로저 및 비로컬" 사용법을 소개합니다. nonlocal은 Python3.0의 새로운 키워드이고 python2.x에서는 지원되지 않기 때문입니다. 이 기사에서는 Python2.x의 임베디드 문제를 해결하도록 제안합니다. 함수 집합에서 외부 변수를 참조하는 유일한 방법은 전역 변수를 정의하기 위해 전역 키워드를 사용하는 것입니다. 또 다른 가능한 해결책은 작업할 키워드 대신 목록이나 사전을 사용하는 것입니다.

예는 다음과 같습니다.

1.python3.0 비로컬 키워드 사용

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

2.python2. x list 또는 dict를 사용하여

>>> def outer():
        x = [1]
        def inner():
            x[0] += 1 #修改x[0]保存的值
            print("inner:", x[0])
        inner()
        print("outer:", x[0])
 >>> outer()
 inner: 2
 outer: 2


추가 참조:

1. //stackoverflow.com/questions/1261875/python-nonlocal-statement

2. 자바스크립트와 Python 범위의 범위 체인 정의의 유사점과 차이점

3.공식 문서:

“nonlocal 문은 나열된 식별자가 가장 가까운 둘러싸는 범위에서 이전에 바인딩된 변수를 참조하도록 합니다. 바인딩의 기본 동작은 로컬 네임스페이스를 먼저 검색하는 것이므로 이 문을 사용하면 캡슐화된 코드가 외부에서 변수를 다시 바인딩할 수 있습니다. 전역(모듈) 범위 외에 로컬 범위.

global 문에 나열된 이름과 달리 nonlocal 문에 나열된 이름은 둘러싸는 범위(새 바인딩이 있는 범위)의 기존 바인딩을 참조해야 합니다. 생성되어야 함을 명확하게 결정할 수 없음).

비로컬 문에 나열된 이름은 로컬 범위의 기존 바인딩과 충돌해서는 안 됩니다."


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.