반응형
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. 오류 해결책
- 전역 변수를 명확히 사용하려면
global
키워드 사용- 함수 내부에서 전역 변수
x
를 수정하려면global x
를 명시적으로 선언합니다.
- 함수 내부에서 전역 변수
- 지역 변수를 사용하려면 초기화 필요
- 함수 내부에서 지역 변수로
x
를 선언하고 싶다면 사용하기 전에 초기화해야 합니다.
- 함수 내부에서 지역 변수로
- 전역 변수에 의존하지 않는 코드 작성
- 함수 내부에서 전역 변수 대신 매개변수를 통해 데이터를 전달받아 사용하는 것이 좋습니다.
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 |
댓글