Python의 바인딩 해제된 이름: UnboundLocalError 이해
Python에서 이름을 발견하면 인터프리터는 현재 범위 내에서 바인딩 상태를 확인합니다. 이름이 값에 바인딩되어 있지 않으면 오류가 발생합니다. 이러한 오류를 방지하려면 이름 바인딩이 작동하는 방식을 이해하는 것이 중요합니다.
바인딩되지 않은 로컬 이름의 특성
UnboundLocalError는 로컬 변수가 할당되기 전에 참조될 때 발생합니다. 값 또는 바인딩 작업(예: 할당, 함수 매개변수)이 발생하기 전입니다. 이러한 상황은 조건문으로 인해 바인딩 작업이 실행되지 않을 때 발생할 수 있습니다.
다음 코드 조각을 고려하세요.
def foo(): if False: spam = 'eggs' print(spam)
이 예에서 spam 변수는 if 내에 바인딩되지 않습니다. 조건이 False로 평가되기 때문에 명령문이 차단됩니다. 인터프리터가 print 문을 발견하면 스팸에 대한 바인딩된 값을 찾을 수 없기 때문에 UnboundLocalError가 발생합니다.
바인딩 작업
Python에서 바인딩 작업은 범위를 설정합니다. 이름의. 이러한 작업에는 다음이 포함됩니다.
글로벌 및 로컬 바인딩
로컬 이름은 특정 범위, 일반적으로 함수 또는 중첩 블록 내에서 바인딩됩니다. 반면에 전역 이름은 함수 범위 외부에 바인딩되며 프로그램의 어느 지점에서나 액세스할 수 있습니다. 변수를 전역으로 명시적으로 선언하려면 함수 범위 내에서 전역 키워드를 사용해야 합니다.
예를 들어 다음 코드 조각을 고려하세요.
foo = None def bar(): foo = 'spam' print(foo)
이 코드는 foo 때문에 UnboundLocalError를 발생시킵니다. bar 함수의 범위 내에서 바인딩됩니다. 이 문제를 해결하려면 foo를 함수 내에서 전역 변수로 선언해야 합니다.
foo = None def bar(): global foo foo = 'spam' print(foo)
요약
UnboundLocalErrors는 바인딩되기 전에 지역 변수를 참조할 때 발생합니다. 값으로. 이러한 오류를 방지하려면 바인딩 작업과 전역 및 로컬 이름의 개념을 이해하는 것이 필수적입니다. 이름 바인딩을 적절하게 관리함으로써 Python 프로그래머는 바인딩되지 않은 이름과 관련된 오류 없이 코드가 실행되도록 할 수 있습니다.
위 내용은 Python이 UnboundLocalError를 발생시키는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!