ドキュメントとエラーメッセージの読み方
このトピックを終えると
Pythonのエラーメッセージ(トレースバック)を読み、問題が発生した箇所を特定する方法と、公式ドキュメントから必要な情報を素早く見つける方法を習得します。
エラーが発生した場合、どこを見ればいいか
Traceback (most recent call last):
File "main.py", line 12, in <module>
result = calculate(data)
File "main.py", line 7, in calculate
return total / count
ZeroDivisionError: division by zero初心者のうちは、赤い文字が出てくると戸惑います。しかし、Pythonのエラーメッセージは非常に親切です。読む順番があります。
- 一番下の行から読みます —
ZeroDivisionError: division by zero。何が問題なのかを教えてくれます。 - そのすぐ上 —
return total / count。どこで発生したのかコードを示してくれます。 - そのさらに上 —
File "main.py", line 7。ファイル名と行番号を教えてくれます。
トレースバックは下から上へ読むものです。一番下が実際のエラーで、上にいくほど「どこでこの関数が呼び出されたか」を追跡する経路です。
よく見かけるエラー5種類
| エラー | 意味 | 代表的な原因 |
|---|---|---|
NameError | 存在しない変数 | スペルミス、変数宣言前に使用 |
TypeError | 型が一致しない | "hello" + 5、関数引数の数と一致しない |
IndexError | インデックスの範囲超過 | lst[10]だがリストに3つしかない |
KeyError | 辞書に存在しないキー | d["name"]だが "name" キーがない |
AttributeError | オブジェクトに存在しないメソッド/属性 | None.split()、型の勘違い |
これら5つが、初心者が遭遇するエラーの80%以上を占めます。
エラーメッセージで検索する
エラーを解決する最も迅速な方法:
- 一番下の行全体をコピーします —
ZeroDivisionError: division by zero - そのまま検索します
- Stack Overflowや公式ドキュメントで、同じエラーを経験した人の解決策を参照します
この際、重要なのは自分の変数名は除いて検索することです。my_dataは自分だけが使う名前なので、検索には役立ちません。エラーの型とエラーメッセージだけを検索してください。
公式ドキュメントの読み方
Pythonの公式ドキュメント(docs.python.org)は、最初は読みにくく感じるかもしれません。すべてを読もうとしないでください。必要な部分だけを見つければいいのです。
# 「リストから特定の値を削除したい」# → 検索: "python list remove"# → docs.python.org/3/tutorial/datastructures.html
# list.remove(x)# Remove the first item from the list whose value# is equal to x. It raises a ValueError if there# is no such item.公式ドキュメントが教えてくれること:
- 何をするのか — 最初の一致する項目を削除
- 注意点 — 存在しない場合はValueErrorが発生
- 返り値 — (ここではNone — 元のオブジェクトを修正)
この3つを確認すれば十分です。実践環境で実際にテストしながらドキュメントを読むのが最も効果的です。
便利な組み込みヘルプ
# ターミナルから直接ドキュメントを表示help(str.split)
# オブジェクトが持つメソッドのリストを表示dir(str)
# 型を確認type(my_variable)help()は対話型シェル(REPL)で使用できます。インターネットに接続しなくてもドキュメントを表示できます。
dir()は、「このオブジェクトには何があるのか」を知りたいときに使用します。リストが表示されれば、.sort()や.reverse()などのメソッドを発見できます。
デバッグの習慣
エラーが発生しないが、結果がおかしいとき:
# 1. 中間段階でprint文を挿入print(f"data: {data}")print(f"count: {count}")result = total / count
# 2. 型を確認print(type(result)) # <class 'float'> vs <class 'str'>
# 3. 小さな単位でテスト# 関数全体を実行するのではなく、1行ずつREPLで確認printでデバッグするのは原始的ですが、初心者の段階では最も確実です。変数の値が何であるか推測するのではなく、実際に表示させてください。
重要なポイント
エラーメッセージは下から上へ読みます。一番下 = 何が問題なのか、上 = どこで発生したのか。 検索する際はエラーの型とメッセージだけをコピーし、自分の変数名は除いてください。 公式ドキュメントはすべてを読まないでください — 何をするのか、注意点、返り値の3つだけを確認すれば十分です。