외부 범위에서 변수 수정
함수 캡슐화는 Python에서 일반적인 관행이지만, 외부 범위에 정의된 변수에 액세스하고 수정할 때 문제가 발생합니다. 범위. 이 문서에서는 전역적으로 정의되지는 않았지만 둘러싸는 범위에 존재하는 변수를 수정하는 방법을 살펴봅니다.
Python 범위 및 변수 결정
Python은 어휘 범위를 따릅니다. 즉, 변수는 다음과 같습니다. 소스 코드에서의 위치를 기반으로 확인됩니다. 외부 범위(포함 함수)는 중첩된 범위(내부 함수) 내에 정의된 변수에 액세스할 수 있지만 그 반대는 적용되지 않습니다. 전역으로 선언하지 않고 외부 범위의 변수를 수정하려고 하면 UnboundLocalError가 발생합니다.
외부 범위 변수 수정
Python 3에서는 nonlocal 키워드가 해결책을 제공합니다. . 변수가 외부 범위에 정의되어 있더라도 내부 함수 내에서 변수를 수정할 수 있습니다. 변수가 로컬이 아닌 것으로 선언되면 Python은 해당 변수가 외부 범위에 바인딩된 것으로 간주합니다.
예:
def outer(): a = 5 def inner(): nonlocal a a += 1 print(a) outer()
출력:
6
Python 2 해결 방법
Python 2의 경우 직접적인 방법은 없습니다. 비로컬과 동일합니다. 그러나 목록이나 사전과 같은 변경 가능한 객체를 사용하면 동일한 효과를 얻을 수 있습니다. 가변 객체의 내용을 수정하면 외부 범위의 변수 값을 간접적으로 수정할 수 있습니다.
예:
def outer(): a = [] def inner(): a.append(1) inner() inner() print(a)
출력:
[1, 1]
Python의 범위 규칙을 이해하고 적절한 기술을 사용하면 외부, 비전역 범위에 있는 변수에 액세스하고 수정할 수 있습니다. 캡슐화를 촉진하고 바람직한 프로그램 동작을 달성합니다.
위 내용은 중첩된 Python 함수 내의 외부 범위에 있는 변수를 어떻게 수정할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!