Notice
Recent Posts
Recent Comments
Link
개발 무지렁이
[Error py] UnboundLocalError: local variable referenced before assinment 본문
코딩 테스트/Error in Python
[Error py] UnboundLocalError: local variable referenced before assinment
Gaejirang-e 2023. 7. 6. 01:51(1) [UnboundLocalError가 나는 코드.py]
cnt = 0
def cnt_plus():
# 지역 네임스페이스
cnt += 1
cnt_plus()
변수에 값을 할당(초기화)하기 전에, 니가 참조해버렸어!
이런 오류가 날까?
네임스페이스(Namespace)
빌트인 네임스페이스 > 전역 네임스페이스 > 지역 네임스페이스 가 있다.
당연스럽게 지역변수 범위를 포함하는데 왜?????...
(2) [정상적인 코드.py]
cnt = 0
def cnt_clone():
# 지역 네임스페이스
clone = cnt
print(clone)
cnt_clone()
위의 코드는 정상적으로 동작한다.
코드(1)와 코드(2)의 중요한 차이점은 전역변수에 새로운 값을 할당하나 아니면, 전역변수를 참조하냐에 있다.
코드(1)와 같이, 지역 네임스페이스에서 '새로운 값의 할당'이 일어날 때, cnt를 로컬변수로 인식한다.
하지만, cnt라는 로컬변수가 없음으로 여기서 에러가 난다.
코드(2)와 같이, 지역 네임스페이스에서 '변수의 참조'가 일어날 때,
지역 네임스페이스 안에 해당 변수가 없으면 전역 네임스페이스에서 해당 변수를 찾는다.
(1-ANSWER) [정상적인 코드.py]
cnt = 0
def cnt_plus():
global cnt
cnt += 1
cnt_plus()
코드(1)을 정상적으로 처리하려면 cnt가 전역변수임을 알려야 한다 => global cnt
Comments