[エラーの原因と対処法]xxx is not defined[Python]

スポンサードリンク
アイキャッチ Python
過去の自分
過去の自分

Pythonで作ったシステムを動かしたら、
「Name error: name xxx is not defined」というエラーが出た。
原因と対処法を教えて!

今の自分
今の自分

了解!
代表的な原因と対処法をいくつか紹介するよ!

「Name error: name xxx is not defined」というエラーの原因と対処法を
Python歴3年の私が、できるだけわかりやすく解説し、解決に導きます。

スポンサードリンク

「Name error: name xxx is not defined」エラーの原因

代表的な原因は以下の2つです。

  • 変数名や関数名が間違っている
  • 「del」を使っている

1つ1つ見ていきましょう。

スポンサードリンク

「Name error: name xxx is not defined」はどんなエラー?

まず、「Name error: name xxx is not defined」はどんなエラーなのでしょうか。

直訳すると、「xxx は定義されていません」となり、簡単に言うと、以下のように返事されています。

  • xxx なんて知りません
  • xxx なんて聞いてませんけど…
  • xxx が見つかりません

要約すると、「xxx がわからないからこれ以上プログラムを進められないよ!」と言ってきています。

なので、基本的には、「xxx を探す」「xxx を ○○○に変更する」必要があります。

スポンサードリンク

まずやるべきこと

「Name error: name xxx is not defined」というエラーが出たら、まずやるべきことがあります。

それは、「xxx」を構文内で検索することです。

検索できないソフトを使用している場合は、構文全てをメモ帳などにコピーし、検索してみましょう。

検索結果が1件以上必ずヒットします。
その前後の構文をチェックしましょう。

検索結果と前後の構文で、ある程度の原因と対処法が見えてきます。

では具体的な原因と対処法を見ていきましょう。

スポンサードリンク

「Name error: name xxx is not defined」の原因と対処法

冒頭でも触れましたが、代表的な原因は以下の2つです。

  • 変数名や関数名が間違っている
  • 「del」を使っている

1つ1つ見ていきましょう。

変数名や関数名が間違っている

1つ目の原因は「変数名や関数名が間違っている」です。
私の経験上、一番多い原因がコレです。

以下のコードを見てください。

hensu = 1
print(hensuu)

実行結果:Name error: name ‘hensuu’ is not defined

「’hensuu’なんて聞いてません!というエラーが出ました。

1行目で「hensu」に1を入れ、
2行目で「hensuu」をprint(表示)しようとしています。

プログラム側は、今まで出てきてない「hensuu」を表示するように言われて、「え?何それ?」と返事してきてるのです。

例えば知人があなたに向かって、全く知らない「’うたたね’さんの絵を描いて!」と言われたら、「うたたねさん?誰それ?」となり、描けませんよね。今回もそのようなことが起きています。

この場合、2行目の「hensuu」が間違っており、正しくは1行目と同じ「hensu」です。

このように構文ミスによる変数名の間違いがあると、エラーが起こります。

変数名や関数名が間違っている場合の対処法

原因は「変数名が間違っている」ということなので、変数名を正しくすることで解決するのですが、
最初のうちはエラーが出ただけで焦ってしまいますよね。

前項の「まずやるべきこと」でも書きましたが、このエラーが出た場合、
ひとまず「xxx」を構文内で検索してみましょう。

xxxが変数の場合、検索結果が「1件」だったら構文ミス確定です。
変数なら必ず2件以上ヒットします。

検索結果が複数ある場合でも、ヒットした部分より前に、似たような変数が使われていないか確認して修正しましょう。

前項の例では、「hensuu」を「hensu」に修正すると、「hensu」に入れた「1」が表示され、
正常終了します。

hensu = 1
print(hensuu)

   ↓

hensu = 1
print(hensu)

実行結果:1

次に、2つ目の原因です。

「del」を使っている

2つ目は、【「del」を使っている】です。

「del」は変数や関数を削除する時に使われます。
「del」で変数や関数を「削除」するため、その変数や関数は消えて未定義の状態(作成される前の状態)に戻ります。

delについては下記記事にて詳しく解説しておりますので、気になる方はご覧ください。

では、delを使った場合の見本です。
下記のコードを見てください。

hensu = 1
del hensu
print(hensu)

実行結果:Name error: name ‘hensu’ is not defined

起きている状況を説明いたします。

  1. 変数を作成する
  2. delで変数を削除する → 変数が消える
  3. 消えた変数を表示しようとする → 変数が消えているためエラーとなる

というわけです。

「del」を使っている場合の対処法

「del」を使っている場合の対処法は2つです。

  • 「del」を使うのをやめる
  • 変数や関数を新しい名前で作成し直す

1つずつ見ていきましょう。

「del」を使うのをやめる

1つ目の対処法は「delを使うのをやめる」です。

「del」が原因のため、「del」をやめれば問題は解決します。

しかしながら、「del」を使って変数や関数を削除したのには何らかの理由があります。

例えば、「メモリエラーを改善するため」や「誤作動防止のため」などです。

「del」を使うのをやめることによって、逆にこれらの問題が再発する可能性がありますので、自己責任で行ってください。

変数や関数を新しい名前で作成し直す

2つ目は、「変数や関数を新しい名前で作成し直す」です。

delで削除した変数や関数は使わず、新しく作り直しましょう。

新しい名前で作成したら、下記を再検索しましょう。

「Name error: name xxx is not defined」の「xxx」を再検索

検索で出てきた「xxx」のエラー箇所から下を全て新しい名前に書き換えましょう。

hensu = 1
del hensu
print(hensu)
a = hensu

   ↓

hensu = 1
del hensu
hensuuuu = 1
print(hensuuuu)
a = hensuuuu

その他の原因

その他にも以下のような原因があります。確認してみてください。

  • importが抜けている
  • 関数の頭文字を小文字で書いてしまっている
スポンサードリンク

最後に

「Name error: name xxx is not defined」エラーの原因と対処法を解説いたしました。

ひとまずこのエラーが出た場合は、「xxx」を構文内で検索してみてください。

このブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、ぜひ他の記事も読んでいってください。

最後までお読みいただき、ありがとうございました。がんばってください!

タイトルとURLをコピーしました