python除錯神器 icecream

2021-10-19 08:50:14 字數 1801 閱讀 8986

icecream是乙個python第三方庫,可通過最少的**使列印除錯更清晰明了。你可以直接使用pip install icecream來進行安裝。

from icecream import ic 

num1 = 20

num2 = 30

ic(num1)

ic(num2)

程式輸出結果為:

ic| num1: 20

ic| num2: 30

我們可以很清楚的知道呼叫結果。

from icecream import ic 

def plus_five(a):

return a+5

ic(plus_five(12))

ic(plus_five(2))

程式輸出結果為:

ic| plus_five(12): 17

ic| plus_five(2): 7

如果你想要找到執行**的位置,可以通過執行如下所示的操作,來查詢執行了哪個語句。

from icecream import ic 

def hello(user):

if user:

ic()

else:

ic()

ic(hello(true))

程式輸出結果為:

ic| tmp.py:11 in hello() at 07:52:13.836

ic| hello(true): none

從結果中我們看到,第11行的**已經被執行了。

如果您想在列印語句中插入自定義字首(例如**執行時間),icecream也是能實現的。

from datetime import datetime

from icecream import ic

import time

from datetime import datetime

def time_format():

return f'|> '

ic.configureoutput(prefix=time_format)

for _ in range(3):

time.sleep(1)

ic('hello')

程式輸出結果為:

2021-02-10 15:59:18.142344|> 'hello'

2021-02-10 15:59:19.190267|> 'hello'

2021-02-10 15:59:20.205576|> 'hello'

除了知道和輸出相關的**之外,你可能還想知道**執行的行和**檔案。

在ic.configureoutput()中,設定includeecontext的引數值為true即可。

from icecream import ic 

def plus_five(num):

return num + 5

ic.configureoutput(includecontext=true)

ic(plus_five(4))

ic(plus_five(5))

程式輸出結果為:

ic| tmp.py:13 in - plus_five(4): 9

ic| tmp.py:14 in - plus_five(5): 10

詳解Python除錯神器之PySnooper

相信很多程式設計師在除錯 時,都用過 print。少還好說,如果是大型專案,面對眾多 print 的輸出結果,可能要頭大了。今天推薦乙個 github 熱門開源專案 pysnooper。該專案推出的第一天就收穫 2000 star,登上了 github 日榜第一位,如今有近 15k star。可見這...

你必須擁有的Python除錯神器

今天推薦乙個python除錯工具可以讓你的除錯更快更方便,叫ipdb。知道的朋友都知道我一般操作就是pycharm vim的模式,原因我解釋過了,既能使用vim編輯器之神的配置,也能用到pycharm這種ide的方便。安裝使用一般就是 pip install ipdb,相信大家沒啥問題,這裡我們可以...

bug除錯,神器再現

現在主要負責stb軟體的除錯,上次在st 平台出現乙個問題,定位了好久,現在想拿出來共大家分享,除錯過程 問題描述 除錯過程 一開始沒有懷疑st的問題,因為st則個版本畢竟已經出過很多貨了,就一直以為是上層應用寫得不規範,試圖修改上層應用解決該問題,嘗試了很多種方法都無效果 看來只有使用神器了,當出...