#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専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。

コメント

このブログの人気の投稿

#25 Rustで学ぶAI API(ChatGPT等)の呼び出し方の基本

#8 C++で学ぶ文字列操作の基本

#16 TypeScriptで学ぶ辞書型(マップ)の基本