728x90
반응형
본 포스팅은 업무 중 발생했던 오류들을 예시를 통해 어떻게 해결을 하는지 작성했다.
UnboundLocalError: local variable 'img' referenced before assignment
위 오류는 'img'라는 변수가 선언이 안되었다는 얘기로 해당 변수가 누락이 되었을 때 발생하는 오류이다.

다만 일반적인 오류랑은 다른 것이 def로 함수 선언 시 그 내부에 있는 변수가 누락되었을 때 저 오류가 발생한다는 것이다.
mask = [0,0,1,0,1]
if 1 in mask:
pass
else:
img = mask
print(img)
"""
NameError Traceback (most recent call last)
/WORKSPACE/test.ipynb Cell 33 in <cell line: 8>()
5 else:
6 img = mask
----> 8 print(img)
NameError: name 'img' is not defined
"""
해당 코드는 img가 조건문에 의해 선언이 되지 않아 발생한 오류이다. 이때 발생한 오류는 우리가 다루고자 하는 오류와 내용은 동일하지만 생김새가 다르다.
def mask2img(mask):
if 1 in mask:
pass
else:
img = mask
return img
mask = [0,0,1,0,1]
mask2img(mask)
print(img)
"""
---------------------------------------------------------------------------
UnboundLocalError Traceback (most recent call last)
/WORKSPACE/test.ipynb Cell 35 in <cell line: 3>()
1 mask = [0,0,1,0,1]
----> 3 mask2img(mask)
5 print(img)
/WORKSPACE/test.ipynb Cell 35 in mask2img(mask)
4 else:
5 img = mask
----> 7 return img
UnboundLocalError: local variable 'img' referenced before assignment
"""
비로소 우리가 다루고자하는 오류가 나왔다.
해당 오류는 함수 내에서 특정 변수가 선언되지 않아 오류가 발생할 때 나오는 메시지이다.
이를 통해 변수 선언에 대해 오류가 발생했을 때, 경우에 따라 우리가 어느 부분을 보고 디버깅을 해야 하는지 유추할 수 있다.
728x90
반응형
댓글