エラー辞典

UnboundLocalError

ローカル変数として扱われているのに、値が代入される前に参照してしまったときに発生するエラーです。

原因

関数内でグローバル変数と同名の変数に代入しているため、Pythonがその変数を最初からローカル変数とみなしてしまうことが原因です。

エラーになるコード例

count = 0

def increment():
    count = count + 1
    print(count)

increment()
UnboundLocalError: local variable 'count' referenced before assignment

修正版

count = 0

def increment():
    global count
    count = count + 1
    print(count)

increment()

よくある間違い

  • 関数内でグローバル変数を更新するのに global 宣言を忘れる
  • 同名のローカル変数とグローバル変数を混同している

← エラー辞典に戻る