> 백엔드 개발 > 파이썬 튜토리얼 > Python에서 비전역, 둘러싸는 범위의 변수를 어떻게 수정할 수 있습니까?

Python에서 비전역, 둘러싸는 범위의 변수를 어떻게 수정할 수 있습니까?

Susan Sarandon
풀어 주다: 2024-12-28 05:01:09
원래의
585명이 탐색했습니다.

How Can I Modify Variables in a Non-Global, Enclosing Scope in Python?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿