>백엔드 개발 >파이썬 튜토리얼 >함수 내부의 `counter = 1`이 Python에서 `UnboundLocalError`를 일으키는 이유는 무엇입니까?

함수 내부의 `counter = 1`이 Python에서 `UnboundLocalError`를 일으키는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-15 00:32:14124검색

Why Does `counter  = 1` Inside a Function Cause an `UnboundLocalError` in Python?

UnboundLocalError in Closures: An Analysis

UnboundLocalError는 함수 코드 내에서 사용된 변수가 로컬, 전역 또는 다음과 같이 정의되지 않은 경우 발생합니다. 비로컬 블록의 일부. 다음 코드를 고려해보세요.

counter = 0

def increment():
  counter += 1

increment()

이 코드를 실행하면 UnboundLocalError가 발생합니다. 왜 이런 일이 발생합니까?

Python의 변수 범위 이해

Python은 할당에 따라 변수 범위를 동적으로 결정합니다. 변수가 함수 내에서 할당되면 해당 함수에 대해 지역적인 것으로 간주됩니다. 이 예에서 increment() 내의 할당 counter = 1은 암시적으로 counter를 해당 함수에 대해 로컬로 정의합니다.

로컬 변수와 전역 변수

Python은 로컬 변수와 로컬 변수를 구별합니다. 전역 변수. 전역 변수는 모듈 수준에서 선언되며 프로그램 전체에서 액세스할 수 있습니다. 반면에 지역 변수는 함수 내에서 생성되며 해당 함수 내에서만 존재합니다.

우리의 경우 counter는 전역적으로 정의되지 않습니다. 이 오류는 Python이 할당되기 전에 increment()의 로컬 범위에서 counter 값을 읽으려고 하기 때문에 발생합니다. 따라서 UnboundLocalError.

오류 해결

이 오류를 해결하려면 다음 중 하나를 수행할 수 있습니다.

  • 전역 키워드: 함수 내부와 외부 모두에서 액세스할 수 있는 변수의 경우 전역 키워드를 사용하세요. 이는 변수를 전역으로 선언하여 모든 범위에서 액세스할 수 있도록 합니다.
  • 비로컬 사용(Python 3.x만 해당): 이 키워드는 변수를 비로컬로 선언하는 데 사용됩니다. 현재 함수에 대해 로컬이 아니지만 포함되지 않은 함수 내에서 액세스할 수 있습니다.

위 내용은 함수 내부의 `counter = 1`이 Python에서 `UnboundLocalError`를 일으키는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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