>  기사  >  백엔드 개발  >  Python 2.x에서 로컬이 아닌 변수에 액세스: 제한 사항을 해결하는 방법은 무엇입니까?

Python 2.x에서 로컬이 아닌 변수에 액세스: 제한 사항을 해결하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-22 08:37:30647검색

Accessing Nonlocal Variables in Python 2.x: How to Work Around the Limitations?

Python 2.x 클로저의 비지역 변수에 액세스

Python 2.x에는 nonlocal 키워드가 부족하여 비지역 변수 액세스에 대한 의문이 제기됩니다. 폐쇄에서. 내부 함수는 본질적으로 비지역 변수를 읽을 수 있지만 리바인딩은 허용되지 않습니다.

비지역 변수 액세스에 대한 해결 방법

이러한 제한에도 불구하고 해결 방법을 사용할 수 있습니다.

  • 변경 가능한 비지역 변수: 비지역 변수는 변경 가능한 객체를 참조할 수 있습니다. 내부 함수는 이러한 객체를 수정하여 로컬이 아닌 변수의 값을 간접적으로 효과적으로 변경할 수 있습니다.
  • 사전 저장소: 로컬이 아닌 데이터 요소를 저장하는 사전을 만듭니다. 내부 함수는 필요에 따라 이러한 요소에 액세스하고 수정할 수 있습니다.

사전 사용 예

Wikipedia의 예를 기반으로 다음 코드 조각을 고려하세요.

<code class="python">def outer():
    data = {'y': 0}

    def inner():
        data['y'] += 1
        return data['y']

    return inner

f = outer()
print(f(), f(), f())  # prints 1 2 3</code>

이 예에서는 사전 데이터를 사용하여 비지역 변수 y를 저장합니다. 내부 함수는 비지역 변수 리바인딩에 대한 제한을 위반하지 않고 y 값을 증가시키고 업데이트된 값을 반환할 수 있습니다.

위 내용은 Python 2.x에서 로컬이 아닌 변수에 액세스: 제한 사항을 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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