Python에서는 로컬 변수에 값이 할당되기 전에 참조되면 UnboundLocalError가 발생합니다. 다른 프로그래밍 언어와 달리 Python에는 명시적인 변수 선언이 필요하지 않습니다. 대신 변수는 할당될 때 값에 바인딩됩니다.
UnboundLocalError를 발생시키는 한 가지 방법은 할당되지 않은 변수에 액세스하는 것입니다.
>>> foobar Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'foobar' is not defined
또 다른 방법은 할당 작업이 실행되지 않는 경우입니다. 조건부 블록 내에서와 같이:
def foo(): if False: spam = 'eggs' print(spam) >>> foo() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 4, in foo UnboundLocalError: local variable 'spam' referenced before assignment
Python에서는 할당, 함수 매개변수, 가져오기 등 다양한 작업을 통해 이름이 값에 바인딩됩니다. 명령문, 예외 처리기 및 컨텍스트 관리자. 이름이 함수 범위에 바인딩되면 지역 변수가 됩니다. 함수 내의 전역 변수에 액세스하려면 전역 또는 비로컬 문을 사용해야 합니다(Python 3의 경우).
예를 들어 다음 함수는 전역 변수 foo에 액세스하려고 시도하지만 함수 내에 바인딩되어 있기 때문에 실패합니다. 범위:
foo = None def bar(): if False: foo = 'spam' print(foo) >>> bar() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 4, in bar UnboundLocalError: local variable 'foo' referenced before assignment
그러나 전역 foo를 사용하면 문제가 해결됩니다.
foo = None def bar(): global foo if False: foo = 'spam' print(foo) >>> bar() None
개념 이해 Python에서 UnboundLocalError를 방지하려면 변수 바인딩이 중요합니다.
위 내용은 Python에서 UnboundLocalError가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!