함수 내에서 변수를 재할당할 때 UnboundLocalError 이해
변수가 함수 외부에서 정의되면 전역 변수로 간주되어 함수 내에서 접근 가능합니다. 그러나 변수가 함수 내에서 재정의되면 지역 변수가 되어 전역 변수보다 우선합니다. 이로 인해 동일한 이름으로 전역 변수에 액세스하려고 하면 "UnboundLocalError" 오류가 발생할 수 있습니다.
제공된 예에서:
a, b, c = (1, 2, 3) def test(): print(a) print(b) print(c) c += 1
이 코드가 실행되면 변수 a , b 및 c는 전역적으로 정의됩니다. 테스트 함수 내에서 print(a), print(b) 및 print(c) 행은 전역 변수의 값을 성공적으로 인쇄합니다.
그러나 c = 1 행의 주석 처리가 해제되면 다음을 시도합니다. 테스트 함수 내에서 c 값을 다시 할당합니다. 그러면 새 지역 변수 c가 생성되고 여기에 값 4가 할당됩니다. 결과적으로 print(c) 행이 실행되면 전역 변수 c가 아닌 지역 변수 c를 참조합니다. 지역 변수 c가 참조되기 전에 값이 할당되지 않았기 때문에 "UnboundLocalError" 오류가 발생합니다.
이 오류를 방지하려면 함수 내 변수 이름 앞에 전역 키워드를 사용하여 명시적으로 다음을 수행할 수 있습니다. 전역 변수에 액세스하려고 함을 나타냅니다. 예를 들어 아래 코드는 올바르게 작동합니다.
a, b, c = (1, 2, 3) def test(): global c print(a) print(b) print(c) c += 1
이 경우 테스트 함수가 실행될 때 전역 c 문은 함수의 변수 c가 전역 변수 c를 참조하는 것이 아니라 전역 변수 c를 참조하는지 확인합니다. 지역 변수. 따라서 print(c) 줄은 전역 변수 c의 올바른 값을 인쇄합니다.
위 내용은 Python 함수에서 변수를 재할당하면 UnboundLocalError가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!