#15 Pythonで学ぶデバッグの基本
プログラムが思った通りに動かないとき、原因を探して修正する作業を「デバッグ」と呼びます。この記事では、Pythonにおけるデバッグの基本的な方法と、専用ツールの使い方を解説します。
print()でその場の状態を確認する
最も手軽なデバッグ方法は、print()を使って変数の中身を確認することです。
print(f"ageの中身: {age}")
怪しいと思う箇所の前後にprint()を挟んでいくことで、どこで想定と違う値になっているかを絞り込めます。変数名も一緒に表示しておくと、後で見返したときにどの出力か分かりやすくなります。
エラーメッセージを読む
Pythonのエラーメッセージ(トレースバック)には、どのファイルの何行目で、どんな種類のエラーが起きたかが書かれています。エラーが出たら、まず一番下に書かれているエラーの種類とメッセージを読むことから始めましょう。
Traceback (most recent call last):
File "main.py", line 5, in <module>
result = 10 / 0
ZeroDivisionError: division by zero
この例では、最後の行から「0で割ろうとした」ことが原因だと分かります。エラーの種類(ZeroDivisionErrorなど)で検索すると、原因や対処法が見つかりやすくなります。
デバッガーという専用のツール
VSCodeなどのエディタには、プログラムを1行ずつ実行しながら変数の中身を確認できる「デバッガー」という機能が用意されています。print()をたくさん挟むより効率的に原因を探せます。コード上の特定の行に「ブレークポイント」という目印を置いておくと、実行がその行で自動的に一時停止し、その時点でのすべての変数の値を確認できます。
assertで前提条件を確認する
「この時点でこの変数はこうなっているはず」という前提を明示的にチェックしたい場合は、assertという機能が使えます。
age = -5
assert age >= 0, "ageは0以上である必要があります"
前提が崩れていた場合、その場でエラーとして知らせてくれるため、バグの原因からかけ離れた場所でエラーが起きて混乱する事態を防げます。
Pythonならではの注意点
print()によるデバッグは手軽ですが、確認が終わったコードにデバッグ用のprint()を消し忘れると、実行結果に余計な表示が混ざってしまいます。デバッグが終わったら、使ったprint()を整理する習慣をつけましょう。標準のloggingモジュールを使えば、デバッグ用のメッセージだけをまとめてオン・オフできるため、頻繁にデバッグ出力を使う場合は検討する価値があります。
まとめ
Pythonのデバッグはprint()とエラーメッセージの読解が基本です。慣れてきたらデバッガーやassertも活用し、効率よく原因を探せるようになりましょう。
本ページはプロモーションを含みます。
参考書籍(PR)
Pythonをもっと学びたい方には「スッキリわかるPython入門 第2版」がおすすめです。
PR
コードを書かずに自動化したい方へ
「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿