UnboundLocalError 에러와 예외 처리 방법
UnboundLocalError
는 지역 변수(Local variable)를 참조하려고 했으나, 해당 변수가 아직 할당되지 않은 경우에 발생하는 예외입니다.
파이썬에서 함수 내부에서 선언된 변수는
지역 변수
로 간주됩니다. 함수 외부에 같은 이름의 변수가 선언되어 있어도 함수 내부에서 변수를 참조할 때는 지역 변수로 간주됩니다.
counter = 0 # 전역 변수
def increase_counter():
# UnboundLocalError 발생
counter += 1
return counter
print(increase_counter())
위 코드 예시에서 함수 외부에 선언된 counter
전역(Global) 변수와 increase_counter
함수 내부의 counter
지역(Local) 변수는 서로 다른 변수로 인식됩니다.
따라서 함수 내부에서 counter
변수를 참조하려고 하면, 해당 변수가 아직 할당되지 않았기 때문에 UnboundLocalError
예외가 발생합니다.
위 예시에서 counter
변수를 전역 변수로 사용하려면 global
키워드를 사용해야 합니다.
counter = 0 # 전역 변수
def increase_counter():
# 전역 변수로 사용
global counter
counter += 1
return counter
print(increase_counter())
위 코드에서 increase_counter
함수 내 counter
변수를 전역 변수로 사용하기 위해 global
키워드를 사용했습니다.
UnboundLocalError 예외를 처리하려면 어떻게 해야 할까요?
가장 일반적인 방법으로는 try-except
문을 사용해 UnboundLocalError
예외를 처리할 수 있습니다.
counter = 0 # 전역 변수
def increase_counter():
try:
counter += 1
except UnboundLocalError as e:
print(f'UnboundLocalError 발생: {e}')
return counter
print(increase_counter())
위 코드에서 increase_counter
함수 내부에서 counter
변수를 참조할 때 UnboundLocalError
예외가 발생하면, except
블록에서 예외를 처리하고 메시지를 출력합니다.
UnboundLocalError
예외는 주로 전역 변수와 지역 변수를 혼동하여 발생하는 경우가 많으므로, 함수 내부에서 변수를 참조할 때 주의해야 합니다.
다음 내용이 궁금하다면?
코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세 요!