본문 바로가기
Error(Exception)/ERROR-PYTHON

[python] UnboundLocalError

by 조조군 2024. 12. 11.
반응형

UnboundLocalError


1. 오류 설명

  • UnboundLocalError는 함수나 메서드 내부에서 지역 변수로 선언되지 않았지만 사용된 변수가 참조될 때 발생합니다.
  • 파이썬은 함수 내부에서 변수를 사용할 때 해당 변수가 지역 변수인지 전역 변수인지 판단합니다.
    • 지역 변수: 함수 내에서 선언된 변수.
    • 전역 변수: 함수 외부에서 정의된 변수.
  • 함수 내부에서 전역 변수를 참조하거나 수정하려고 할 때, 해당 변수를 지역 변수로 잘못 인식하면 UnboundLocalError가 발생합니다.

2. 오류 예시

x = 10

def example_function():
    print(x)  # 전역 변수 x를 참조하려고 함
    x = x + 1  # 지역 변수로 인식하고 값을 수정하려고 함

example_function()
  • 오류 메시지:
    UnboundLocalError: local variable 'x' referenced before assignment

3. 오류 해결책

  1. 전역 변수를 명확히 사용하려면 global 키워드 사용
    • 함수 내부에서 전역 변수 x를 수정하려면 global x를 명시적으로 선언합니다.
  2. 지역 변수를 사용하려면 초기화 필요
    • 함수 내부에서 지역 변수로 x를 선언하고 싶다면 사용하기 전에 초기화해야 합니다.
  3. 전역 변수에 의존하지 않는 코드 작성
    • 함수 내부에서 전역 변수 대신 매개변수를 통해 데이터를 전달받아 사용하는 것이 좋습니다.

4. 오류 예제 코드 및 해결 코드

(1) 오류 코드

y = 20

def faulty_function():
    print(y)  # 전역 변수 y를 참조
    y = y + 5  # 지역 변수로 인식되고 값 변경 시도

faulty_function()

(2) 해결 코드: global 사용

y = 20

def fixed_function_with_global():
    global y  # 전역 변수 y를 명시적으로 선언
    print(y)
    y = y + 5

fixed_function_with_global()
print("Updated y:", y)  # y 값 변경 확인

(3) 해결 코드: 지역 변수 초기화

def fixed_function_with_local():
    y = 20  # 지역 변수로 초기화
    print(y)
    y = y + 5
    print("Updated y:", y)

fixed_function_with_local()

(4) 해결 코드: 함수 매개변수 사용

def fixed_function_with_parameter(y):
    print(y)
    y = y + 5
    return y

y = 20
y = fixed_function_with_parameter(y)
print("Updated y:", y)

이처럼 UnboundLocalError는 전역 변수와 지역 변수의 명확한 구분 및 변수 초기화를 통해 쉽게 해결할 수 있습니다.

반응형

'Error(Exception) > ERROR-PYTHON' 카테고리의 다른 글

[python] UnicodeEncodeError  (0) 2024.12.12
[python] UnicodeError  (1) 2024.12.11
[python] TypeError  (0) 2024.12.10
[python] SystemExit  (1) 2024.12.09
[python] SystemError  (0) 2024.12.08

댓글