>백엔드 개발 >파이썬 튜토리얼 >Python에서 \'UnboundLocalError\'가 발생하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

Python에서 \'UnboundLocalError\'가 발생하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-25 07:37:21988검색

Why Does Python Throw an

오류: Python에서 "UnboundLocalError: 할당 전에 참조된 지역 변수"

이 오류가 발생하는 것은 다음을 수행하려고 하기 때문입니다. 초기화되거나 정의되기 전에 지역 변수에 액세스합니다. 이 문제를 일으키는 코드를 살펴보겠습니다.

Var1 = 1
Var2 = 0

def function():
    if Var2 == 0 and Var1 > 0:
        print("Result 1")
    elif Var2 == 1 and Var1 > 0:
        print("Result 2")
    elif Var1 < 1:
        print("Result 3")
    Var1 -= 1

function()

이 코드는 function() 함수 외부에서 두 개의 변수 Var1 및 Var2를 정의합니다. 함수 내에서 Var1을 조작하려고 하는데 괜찮습니다. 그러나 함수 범위 내에서 Var1을 초기화하지 않고 Var1에 액세스하면 문제가 발생합니다.

전역 변수를 사용한 솔루션:

이 문제를 해결하려면 Var1을 다음과 같이 선언할 수 있습니다. 함수 내의 전역 변수. 이는 Python이 함수 내부에 새 지역 변수를 생성하는 대신 함수 외부에 정의된 Var1을 사용하도록 지시합니다. 이를 달성하려면 함수 시작 부분에 다음 줄을 추가하세요.

global Var1

대체 해결 방법: 비지역 변수 사용:

Python 3에서는 nonlocal 문을 도입합니다. 이를 통해 바깥쪽 범위에 정의된 변수를 수정할 수 있습니다. Var1을 전역 변수로 선언하는 대신 함수 내에서 다음 코드를 사용할 수 있습니다.

nonlocal Var1
Var1 -= 1

결론:

UnboundLocalError는 초기화되거나 정의되지 않은 지역 변수입니다. 이 문제를 해결하려면 변수를 전역으로 선언하거나 nonlocal 키워드를 사용하여 바깥쪽 범위에 정의된 변수에 액세스하면 됩니다.

위 내용은 Python에서 \'UnboundLocalError\'가 발생하는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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