본문 바로가기
  • Hello_
Python/Error

[Python_Error] UnboundLocalError: local variable 'xxx' referenced before assignm

by LDwDL 2023. 1. 30.
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
반응형

댓글