NameError: name 'x' is not defined の原因と直し方
定義していない変数を参照したときに出る、最も頻出のエラーの一つです。タイプミス・宣言忘れ・似た名前との混同のパターンを整理します。
エラーメッセージの読み方
Traceback (most recent call last):
main.py- ファイル名
2- 行番号 — 実際にクラッシュした行
<module>- 発生場所 — <module> ならトップレベル、関数名ならその関数の中
NameError- 例外クラス — 何が起きたか。ここを検索するのが最短です
name 'cout' is not defined. Did you mean: 'count'?- 詳細メッセージ — どの値が問題だったか
このエラーが出る典型パターン
パターン1
1 count = 10 2 print(cout ) ^
Traceback (most recent call last):
File "main.py", line 2, in <module>
print(cout)
^^^^
NameError: name 'cout' is not defined. Did you mean: 'count'?
C++のcoutとの混同や単純な打ち間違いで起きます。似た名前の変数が定義されていると、Pythonが候補を提示してくれます。
直し方: cout を count にします。
広告
広告スロット(未設定)
パターン2
1 x = 5 2 print(y ) ^
Traceback (most recent call last):
File "main.py", line 2, in <module>
print(y)
^
NameError: name 'y' is not defined
定義されていない名前を参照すると発生します。似た名前が存在しない場合は「Did you mean」の提案も出ません。
直し方: y を x にします。
パターン3
1 price = 100 2 tax_rate = 0.1 3 print(price + tex_rate) ^
Traceback (most recent call last):
File "main.py", line 3, in <module>
print(price + tex_rate)
^^^^^^^^
NameError: name 'tex_rate' is not defined. Did you mean: 'tax_rate'?
スネークケースの変数名はタイプミスに気づきにくいです。1文字違いでも別の名前として扱われます。
直し方: tex_rate を tax_rate にします。
よくある誤解
似た名前の変数が定義されているとき、Pythonは「Did you mean」で候補を提示してくれますが、常に出るわけではありません。似た名前が存在しない完全な打ち間違いでは出ないので、油断できません。
まとめ
NameError: name 'x' is not definedは初級でつまずきやすい項目です。上の3パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。