포함 범위에서 변수 수정: Python과 같은 난제
Python에서는 범위 개념이 변수의 가시성과 접근성을 좌우합니다. 중첩되고 둘러싸는 범위를 처리할 때 외부 범위의 변수를 수정하는 것이 항상 간단한 것은 아닙니다.
문제: UnboundLocalError
다음 코드 조각을 고려하세요.
def A(): b = 1 def B(): # Access 'b', no problem print(b) # Attempt to modify 'b' b = 2 # UnboundLocalError B() A()
여기서는 변수 b가 바깥쪽 스코프에 정의되어 있습니다. B. 하지만 글로벌하지는 않습니다. B 내에서 b를 직접 수정하려고 하면 b가 B에서 지역 변수로 선언되지 않았기 때문에 UnboundLocalError가 발생합니다.
해결책: 비전역 범위 수용
Python 3에서는 nonlocal 키워드가 도움이 됩니다. 이를 사용하면 둘러싸는 비전역 범위에서 변수를 수정할 수 있습니다.
def A(): b = 1 def B(): nonlocal b b = 2 B() print(b) # Output: 2
Python 2의 대안: 구조 변경 가능
Python 3은 편리합니다. nonlocal 키워드인 Python 2는 직접적인 솔루션을 제공하지 않습니다. 해결 방법은 변수를 다시 할당하는 대신 변경 가능한 객체(예: 목록 또는 사전)를 사용하고 해당 값을 변경하는 것입니다.
def foo(): a = [] def bar(): a.append(1) bar() bar() print(a) # Output: [1, 1]
객체인 목록 a를 조작하면 기본적으로 해당 내용을 수정할 수 있습니다. Python 2의 범위 규칙을 준수합니다.
위 내용은 Python에서 범위를 둘러싸는 변수를 어떻게 수정할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!