当前位置: 首页 > 工具软件 > Cream > 使用案例 >

python调试神器:icecream

凌钊
2023-12-01

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'{datetime.now()}|> '

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 <module>- plus_five(4): 9
ic| tmp.py:14 in <module>- plus_five(5): 10

地址:https://github.com/gruns/icecream

 类似资料: