Python初心者にとっては NameError と ValueError は非常に間違いやすいエラーだと感じています。
私自身、どちらがどんなときに出るのか混乱していたので、例と一緒に1枚で整理してみました。
今回はこの2つのエラーの違いを、初心者向けにやさしくまとめた学習記録です。
🔍 NameError と ValueError の違い
| エラー名 | どんなときに起きる? | 例 |
|---|---|---|
NameError |
定義されていない変数や関数名を使おうとしたとき | 存在しない変数を参照するなど |
ValueError |
型は合っているけれど、値の内容が不適切なとき | 文字列 'abc' を int() に変換するなど |
🧪 NameError の例
print(x)
NameError: name 'x' is not defined
このエラーは「変数 x がどこにも定義されていないのに参照した」ために発生しています。
Pythonは 名前空間(namespace) から x を探しますが、見つからないので NameError になります。
🧪 ValueError の例
int("abc")
ValueError: invalid literal for int() with base 10: 'abc'
この場合は int() に文字列を渡すという操作自体は正しいですが、渡した 'abc' は整数に変換できない文字列なので 「値が不適切」 ということで ValueError になります。
✅ ポイントまとめ
-
NameError: 名前が存在していないときに発生- 定義していない変数や関数を呼び出したとき
-
ValueError: 値が不正なときに発生- 型はOKでも、内容が想定外(たとえば "abc" → int に変換できない)
📝 学んだこと・感想
NameErrorは「変数名が存在しない」、ValueErrorは「値がヘン」というシンプルなルールで整理できることに気づきました。
今後もよく出るエラーはこうして違いをセットで覚えていきたいです。