今回は、PyPIに公開されている、デバッグを楽にしてくれるライブラリである「icecream」を紹介します。
icecream の概要
プログラムを書いている時に、変数の中身を確認したくなることって、ありますよね。
他にも、関数の戻り値をちょっとみたいと、思うことって案外あると思います。
icecreamは、そんな時に、便利なライブラリです。
変数の中身をprint()で確認する時、次のようにして中身を表示させると思います。
x = "Python"
print(x)
プログラムが短いうちは良いですが、長くなってくると、いくつもの要素が表示されるようになってきます。
そんな時、上記の例は、ターミナルでは「Python」とだけ表示されるため、その他の表示内容に埋もれてしまいがちです。
表示内容が、どの変数のものか確認するため、次のように書くことがあると思います。
x = "Python"
print("x:", x)
このように書くと、「x: Python」と表示されるため、判別しやすくなります。
ただし、いちいちこのように書くのは、手間がかかります。
そこで、icecreamの出番です。
icecreamでは、次のように書きます。
from icecream import ic
x = "Python"
ic(x)
このように書くと、「ic | x: ‘Python’」という形で表示されます。
ライブラリのインポートを行なっておくと、あとは、簡単な記述で、デバッグ時に見やすく表示を行なってくれます。
それでは、「icecream」の使い方について、掘り下げていきましょう。
icecream のインストールのやり方
pip の場合
pip を利用して、ライブラリをインストールする場合は、次のコマンドを入力します。
pip install icecream
2021年2月現在、上記のコマンドでインストールを行なうと、最新バージョンであるバージョン2.1.0がダウンロードされます。
conda の場合
2021年2月現在、Anaconda cloud にicecreamが登録されていないことから、conda コマンドを利用してインストールを行なうことができません。
pip コマンドを利用して、インストールを行ないましょう。
ファイルへのインポートのやり方
icecream を自分のPythonの環境へのインストールが完了したら、実際に使う為にPythonのプログラムファイルにインポートしましょう。
ちゃんと、icecreamをインストール済みかどうかの確認に使うコマンドは、別の記事にまとまったいるので、そちらも確認してみてください。
from icecream import ic
この一文を、ファイルの冒頭に記述すると、icecreamを使う準備完了です!
これ以降に、icecreamの使用例を紹介していきます。
どの例でも、ライブラリをファイルにインポートすることは必要です。
icecreamの使用実例
変数の中身を確認したい時
変数に何が入っているかを確認する時は、次の様に記述します。
x = 'python'
ic(x)
ic(x)というように、調べたい変数を囲うだけです。
関数の引数と結果を確認したい時
関数の引数と結果を確認する時は、次の様に記述します。
def foo(i):
return i + 333
print('関数の引数と結果を確認したい時')
ic(foo(123))
関数fooは、引数iと333を足した数字を返すだけの関数です。
これも先ほどの変数の時のように、ic()で囲ってあげると、関数名 + 引数 + 返り値の組み合わせで表示してくれます。
辞書型の中身を確認したい時
辞書型の中身を確認したい時は、次の様に記述します。
d = {'key': {1: 'one'}}
ic(d['key'][1])
辞書型の中身も、簡単に確認することができます。
クラス変数を確認したい時
クラス変数を確認したい時は、次の様に記述します。
class klass():
attr = 'yep'
ic(klass.attr)
クラス変数の中身を確認する時も、変数の時と同じ感覚で利用できます。
引数なしで利用する場合
ここまで、ic()という記述に、引数として、変数や関数を与え、中身の確認ができるということを紹介してきました。
ここからは、引数を与えず、「ic()」のみを記述した時の使い方を紹介します。
引数が与えられない場合は、ic()が記述されているファイル名とその位置を返すという働きをします。
# ファイル名「icecream_test.py」
ic() # 1番
def bar():
ic() # 2番
y = 1
if y:
ic() # 3番
else:
ic() # 4番
bar()
ic()がいっぱい登場したので、順番に説明していきます。
まず、コメントアウトで、1番にしているic()が、表示結果のボックスの1番の表示例となります。
ic()が、「icecream_test.py」というファイルの26行目にあるということを示しています。
次に関数bar()について、関数内に、必ず通る2番のic()に加えて、if文で、2つのic()が3番と4番として、用意されています。
2番のic()は、関数が呼ばれた時に必ず通ります。表示結果の2番が表示例となります。
3番と4番のic()については、if文で、どちらかのic()しか実行されません。
今回の場合、y = 1なので、if文を通過し、3番のみ実行されます。4番は、実行されないので、結果に表示されません。
プログラムが複雑になった際に、特定の関数やモジュールが実行されているのかどうか分からないということは案外よくあることだと思います。
そのような場合に、icecreamは活躍すると考えます。
まとめ
今回は、Pythonのライブラリの1つである、icecreamについて紹介してきました。
このライブラリは、デバッグを簡単にしてくれるもので、開発期間中にしか、お世話にならないライブラリだと思います。
特に、プログラミングを学習し始めた人は、プログラムがどのように動いているか、想定しにくかったり、変数の中身が分からなくなったりすると思います。
そのような時に、簡単に動きや中身を確認することができるので、学習のつまずきを減らすことができるライブラリだと思います。
ぜひ試してみて下さい。