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

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

Linda Hamilton
풀어 주다: 2024-12-11 16:20:14
원래의
590명이 탐색했습니다.

How Can I Modify Variables in Enclosing Scopes in Python?

포함 범위에서 변수 수정: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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