Pythonのデバッグ用ライブラリIceCreamをご存じでしょうか?
私は最近まで知らなかったのですが、このIceCreamの存在を知って試してみたところ、なかなか使えるライブラリなので使用するようになりました。
全ての機能を網羅しているのは、当然ですが公式READMEです。
全てに共通する事ですが公式ドキュメントが最強です。
勝るものはありません。
以下、基本的な動作確認です。
1.インストール
$ pip install icecream
pip でインストールできます。
2.基本的な使い方
Icecream の ic をインポートします。
from icecream import ic
以下の例では変数 x と変数 y を ic で出力します。
from icecream import ic
x = 100
y = 200
ic(x)
ic(y)
#出力結果
ic| x: 100
ic| y: 200
print でデバッグすると x であれば 100 と出るところが、 ic で出力、変数 x が 100 ですね!ってところまで ic だけで出せます。
もちろん、printでも f-strings とか色々と同じ結果を出す方法はありますが面倒かな?って思うわけです。
ic だけでいいんですもんね。
リストの出力
from icecream import ic
l = [1, 2, 3, 4, 5]
ic(l)
#出力結果
ic| l: [1, 2, 3, 4, 5]
リスト(複数)の出力
引数に複数の値を入れる事も可能です。
from icecream import ic
l = [1, 2, 3, 4, 5]
l2 = [6, 7, 8, 9, 10]
l3 = [11, 12, 13, 14, 15]
ic(l, l2, l3)
#出力結果
ic| l: [1, 2, 3, 4, 5], l2: [6, 7, 8, 9, 10], l3: [11, 12, 13, 14, 15]
出力の有効化 and 無効化
短いコードであれば ic が置いてある場所を目で確認してコメントアウト or 削除でいいかも知れません。
しかし、コードが少し長くなってくると、いちいち ic を探すのが面倒です。
以前は print でデバッグしてたので、IceCream の ic を使った時、ちょっと感動したわけです。
色々な場所に散らばった ic を一括で無効化、または有効化するという機能が個人的にはかなり気に入っています。
出力無効化
from icecream import ic
x = 100
y = 200
#出力無効化
ic.disable()
ic(x)
ic(y)
#出力結果
今度は有効化してみます。
出力有効化
from icecream import ic
x = 100
y = 200
#出力無効化
ic.disable()
ic(x)
ic(y)
#出力有効化
ic.enable()
ic(x)
ic(y)
#出力結果
ic| x: 100
ic| y: 200
一度、無効化しているものを再度、有効化した後に結果が出力されています。
私の場合は単純に先頭に ic.disable() を置いて最終的にコメントアウトするようにデバッグしてます。
その一行で全部の ic を制御できるので、かなり重宝するんですよね。
3.設定変更
prefixを任意の文字列等に変更できます。
ic.configureOutput(prefix="debug_output")
ic("test")
#出力結果
debug_output'test'
変数を入れる事も可能です。
from icecream import ic
x = "change"
ic.configureOutput(prefix=x)
ic("test")
#出力結果
change'test'
IceCream のさわりの部分だけを記載しました。
もっと高度な使い方ができるとは思うのですが、私の場合は超基本的な機能しか使っていません。
それでも print で出して… コメントアウトして… みたいな作業がなくなるのはありがたい事です。
こういったちょっとした事にも感動があったり喜びがあったりするのがコーディングの楽しいところだと個人的には思っています。
とりあえず、こんな感じで以上です。