UnboundLocalError
ローカル変数として扱われているのに、値が代入される前に参照してしまったときに発生するエラーです。
原因
関数内でグローバル変数と同名の変数に代入しているため、Pythonがその変数を最初からローカル変数とみなしてしまうことが原因です。
エラーになるコード例
count = 0
def increment():
count = count + 1
print(count)
increment()修正版
count = 0
def increment():
global count
count = count + 1
print(count)
increment()よくある間違い
- 関数内でグローバル変数を更新するのに global 宣言を忘れる
- 同名のローカル変数とグローバル変数を混同している