> 백엔드 개발 > 파이썬 튜토리얼 > Python 함수에서 변수를 재할당하면 UnboundLocalError가 발생하는 이유는 무엇입니까?

Python 함수에서 변수를 재할당하면 UnboundLocalError가 발생하는 이유는 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-23 03:14:09
원래의
847명이 탐색했습니다.

Why Does Reassigning a Variable in a Python Function Cause an UnboundLocalError?

함수 내에서 변수를 재할당할 때 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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