파이썬 코드를 짜다 보면 아래 에러를 맞이할 때가 있습니다.
UnboundLocalError: local variable 'tmp' referenced before assignment
이 말은 "tmp 라는 변수를 함수 밖에서 선언해놓고 왜 여기서 써?"라는 의미입니다.
아래 내용을 봅시다.
>>> tmp = "hi"
>>> def hi():
... tmp = tmp + 'nice'
...
>>> hi()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in hi
UnboundLocalError: local variable 'tmp' referenced before assignment
python에서 tmp라는 변수를 선언한 뒤, 함수 hi에서 tmp를 이용한 연산을 시도합니다. 그러나 tmp는 함수 밖에서 정의된 변수죠. 이런 변수를 함수 안에서 호출하면 에러가 발생합니다.
만약 함수 안에서 해당 변수를 사용하고 싶다면 변수 앞에 global을 붙여줍시다.
>>> tmp = "hi"
>>> def hi():
... global tmp
... tmp = tmp + 'nice'
...
>>> hi()
>>> tmp
'hinice'