Python에서 범위를 포함하는 비전역 변수 수정
중첩 함수로 작업할 때 정의된 변수에 액세스하고 수정해야 하는 경우가 많습니다. 전역적이지도 않고 동적 범위 지정을 통해 액세스할 수도 없는 둘러싸는 범위에 있습니다. 이는 어휘 범위 지정을 구현하는 Python에서 문제가 될 수 있습니다.
다음 예를 고려하세요.
def A(): b = 1 def B(): # Can access 'b' but cannot modify it directly print(b) B() A()
이 코드에서 변수 b는 B()의 바깥쪽 범위에 정의됩니다. 기능. 그러나 B() 내에서 b를 직접 수정하려고 하면 B()에 대해 로컬로 선언되지 않았기 때문에 UnboundLocalError가 발생합니다.
이 문제를 해결하기 위해 Python은 두 가지 솔루션을 제공합니다.
Python 3: nonlocal 키워드 사용
Python 3에서는 nonlocal 키워드를 사용하여 전역을 제외하고 가장 가까운 둘러싸는 범위. 사용 방법은 다음과 같습니다.
def foo(): a = 1 def bar(): nonlocal a a = 2 bar() print(a) # Output: 2
이 예에서 nonlocal 키워드는 bar() 함수 내에서 비지역 변수를 만들어 수정을 가능하게 합니다.
Python 2 : 가변 객체 사용
비로컬을 사용할 수 없는 Python 2에서는 가변 객체를 사용할 수 있습니다. 목록이나 사전과 같은 개체. 변수를 재할당하는 대신 객체의 값을 변경할 수 있습니다.
def foo(): a = [] def bar(): a.append(1) bar() bar() print(a) # Output: [1, 1]
여기서 a 변수는 변경 가능하며 bar() 함수는 목록에 추가하여 해당 값을 수정할 수 있습니다.
위 내용은 Python에서 비전역, 둘러싸는 범위의 변수를 어떻게 수정할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!