まず結論

NameError は、Pythonがその名前を知らないときに出ます。

print(name)

この前に name を作っていなければ、エラーになります。

読む目安

次のようなエラーで止まった人向けです。

NameError: name 'name' is not defined

意味は「name という名前は定義されていません」です。

イメージで考える

NameError は、Pythonが名前札を探したけれど見つからない状態です。

先に name = "モコ" と書くと、name という名前札が用意されます。

つづりが違うと、Pythonから見ると別の名前札を探していることになります。

先に変数を作る

変数は、使う前に代入しておく必要があります。

name = "モコ"
print(name)

このように、先に name に値を入れておけば動きます。

つづり違いに注意

よくあるのが、変数名のつづり違いです。

message = "こんにちは"
print(mesage)

messagemesage は別の名前です。
Pythonはかなり正直に名前を見ています。

大文字小文字も別

Pythonでは、大文字と小文字も区別されます。

Name = "モコ"
print(name)

Namename は別の名前です。

関数名でも起きる

関数を定義する前に呼んだり、名前を間違えたりしても起きます。

say_helo()

say_hello と書きたかったのに、つづりが違うかもしれません。

読み方のコツ

NameError が出たら、「Pythonが知らない名前を使った」と考えます。
その名前が前の行で作られているか、つづりや大文字小文字が合っているか確認しましょう。

手を動かすミニ練習

変数名のつづりをわざと変えて、エラー文を見てみましょう。

name = "モコ"
print(namae)

namae という名前は作っていないので、Pythonはその名前を見つけられません。