Python学習チャンネル by PyQ

Pythonのオンライン学習プラットフォームPyQのオフィシャルブログです

Pythonの `NameError: name 'xxx' is not defined` とは何ですか?

f:id:kenken0326:20200604152025p:plain

質問

NameError: name '鈴木' is not definedという内容のエラーが出ます。これはどんなエラーでしょうか?どうすればこのエラーが出なくなりますか?

入力した内容(コード)

name = 鈴木
age = 30

print(name)
print(age)

出たエラー(実行結果)

Traceback (most recent call last):
  File "1.py", line 1, in <module>
    name = 鈴木
NameError: name '鈴木' is not defined

回答

これは'鈴木'という未定義の変数を参照しているエラーですね。

NameErrorとはエラーの種類です。 NameError: name '鈴木' is not definedはエラーが起こった原因を表しています。 日本語に訳すと「'鈴木'という名前が定義されていない」という意味になります。

入力したコードは鈴木という単語が文字列なのにクォーテーションで囲まれていません。 もう一度確認してみてください。

NameError: name '鈴木' is not definedの解説

PythonのNameError: ... is not definedエラーは定義されていない変数名を利用した場合に発生します。
NameError: ... is not definedエラーが発生したら、変数名を打ち間違えていないか、変数を定義し忘れていないかチェックしましょう。

エラー2行目のFile "1.py", line 1, in <module>を読んでみると以下のことがわかります。

  • File "1.py…ファイル名1.pyのことを指していることがわかります。
  • line 1…1行目付近でエラーが起きたのかわかります。
  • in <module>…モジュールの中で発生したエラーであることがわかります。
  • まずはエラーで指摘された1行目の前後を確認し、そこにエラーの原因があるかを確認しましょう。

    構文エラーについてはこちらの記事でも解説しています。

    blog.pyq.jp

    PythonでNameErrorが出る時にチェックするといい、よくあるミス

    • 変数を定義しているか
    • スペルミスをしていないか(大文字、小文字を間違えていないか)
    • 文字列がシングルクォーテーション(')かダブルクォーテーション(")のどちらかで囲まれているか
    • クラスのメソッドにおいて第一引数にselfを書き忘れていないか
    • インポートしていないreモジュールを使っていないか
    Copyright ©2017- BeProud Inc. All rights reserved.