LoginSignup
0
3

More than 3 years have passed since last update.

[IPython embed] ちょっと便利なデバッグ方法

Last updated at Posted at 2021-03-22

プログラムを書くとき

この時に,途中でこのコードが正しいのか確認したい・一応かけたけど途中のとこの数値とかがあっているかの確認したいという場合があります.そんな時,私は以下の手法で確認していました.linux上で動かせるのでかっこいい.
ただし,もっと良い方法とかあるかもしれないのでより良い方法を教えてくださると嬉しいです.

!!!!!EMBEDDING!!!!!!

この題のようにembedというのを間に打ち込めば,linuxのようなターミナル上で確認することができます.vscodeのデバッグ昨日よりかっこいいと思っているので,私は多用しています.

まずは黙ってインストール

pip install IPython

Defaulting to user installation because normal site-packages is not writeable
Collecting IPython
Downloading ipython-7.16.1-py3-none-any.whl (785 kB)
|████████████████████████████████| 785 kB 3.3 MB/s
Collecting backcall
・・・・・・・・

こんな感じでインストール完了したらいざ!
まずはサンプルコードembed1.pyがあったとします.

embed1.py
from IPython import embed
cnt = 0
for i in range(10):
    cnt+=i
print(cnt)

これはまあ単純にカウントするだけのコード.答えは45.
しかし途中でドンくらいの数字になっているのか確認したい場合,embedが使えます.


↓ これにembedを加えます.

embed2.py
from IPython import embed
cnt = 0
for i in range(10):
    #######
    embed()
    ######
    cnt+=i
print(cnt)


↓ そしてターミナルで実行.

python .\embed2.py      
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)]
Type 'copyright', 'credits' or 'license' for more information
IPython 7.16.1 -- An enhanced Interactive Python. Type '?' for help.

In [1]:

そうすると,
In [1]:
に入力できるようになります.
そこで,cntを入力します.


In [1]: cnt
Out[1]: 0

In [2]: exit()

Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)]
Type 'copyright', 'credits' or 'license' for more information
IPython 7.16.1 -- An enhanced Interactive Python. Type '?' for help.

In [1]: cnt
Out[1]: 0

In [2]: exit()

Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)]
Type 'copyright', 'credits' or 'license' for more information
IPython 7.16.1 -- An enhanced Interactive Python. Type '?' for help.

In [1]: cnt
Out[1]: 1

In [2]: i
Out[2]: 2

このようになります.
また現在のデバッグを抜けたい場合は
exit()
といれれば出られます.

他にもこのembedでコードが止まった状態でimportしたり,ファイル情報を読み込みして検算したり,と様々なやり方があるので,是非使ってみて下さい.

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3