Tips
今日の開発Tips(2025-07-28)
長時間のデバッグに悩まされている時、printデバッグは手軽ですが、コードに直接print文を追加するのは非効率です。 デバッグ用のprint文を簡単に追加・削除できる方法があれば、開発効率を大幅に向上できます。このTipsでは、Pythonのコンテキストマネージャーを活用した、スマートなprintデバッグ手法を紹介します。
Pythonコンテキストマネージャーを使ったスマートprintデバッグ
デバッグ用のprint文を、コンテキストマネージャーを使って簡単に制御できます。以下のコード例では、debug_printコンテキストマネージャーがprint文の有効・無効を切り替えます。
from contextlib import contextmanager
@contextmanager
def debug_print(enabled=True):
try:
if enabled:
yield
finally:
pass
with debug_print(enabled=True): # デバッグモード有効時はprint文が実行される
print("変数の値:", my_variable)
print("関数の中身:", my_function())
with debug_print(enabled=False): # デバッグモード無効時はprint文は実行されない
print("このprint文は表示されない")
enabled引数をFalseに設定することで、print文を無効化できます。 デバッグが完了したら、enabled=Falseに変更するだけで、print文をきれいに削除できます。 コメントアウトするより、コードの可読性を保ちやすく、開発速度も向上します。
注意点:enabled変数をグローバル変数にしたり、コマンドライン引数で制御するなど、より高度な制御も可能です。 ただし、複雑になりすぎるとかえって非効率になるため、必要に応じて使い分けることが重要です。