使用Icecream提高Python调试效率

本文介绍了Python库Icecream的使用,它能帮助开发者更方便地进行打印调试,提高代码的可读性。通过简单的ic()函数,可以清晰地看到输出的来源和上下文,甚至自定义输出前缀,无需手动添加额外的标识文本。此外,Icecream还能显示代码执行的行数和文件位置,进一步增强调试体验。
摘要由CSDN通过智能技术生成

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料、代码以及交流解答点击即可加入

动机

使用print来调试代码,你会发现查看终端上的许多行输出,然后试图找出每个输出属于哪些代码,这是一个非常繁琐的过程。

例如运行下面的程序


num1 = 30
num2 = 40 

print(num1)
print(num2)

输出结果如下


30
40

这些输出中哪一个是num1?这些输出中哪一个是num2?两个输出可能不是那么糟糕,但是如果有超过5个不同的输出呢?试图找到负责输出的源代码可能会非常耗时。

当然,可以尝试在print语句中添加文本来进行标记,以便更容易地理解:


num1 = 30
num2 = 40 

print('num1', num1)
print('num2', num2)

num1 30
num2 40

但同样,输出文本也会非常耗时。是否有一种方法可以打印负责输出的代码,而不需要输出额外的文本呢?

这就是冰淇淋派上用场的时候了!


num1 = 30
num2 = 40 

ic(num1)
ic(num2)

ic| num1: 30
ic| num2: 40

什么是冰淇淋?

Icecream是一个Python库,可通过最少的代码使打印调试更具可读性。

使用下面的代码安装冰淇淋


$ pip install icecream

让我们通过打印Python函数的输出来进行尝试。


from icecream import ic 

def plus_five(num):
    return num + 5

ic(plus_five(4))
ic(plus_five(5))

 

通过使用ic,我们不仅可以看到输出,还可以看到函数及其参数!多么方便!终端中的颜色也将与上面显示的输出一样多彩。

检查执行情况

要查找代码执行的位置,可以执行下面所示的操作,以查找执行的语句。


def hello(user:bool):
    if user:
        print("I'm user")
    else:
        print("I'm not user")

hello(user=True)

I'm user

通过运行ic()而不需要额外的文本,Icecream可以让您更容易地完成上面的工作。


from icecream import ic 

def hello(user:bool):
    if user:
        ic()
    else:
        ic()

hello(user=True)

 

现在就可以知道函数hello中的第5行的代码已执行,而第7行的代码未执行。

自定义前缀

如果想要插入一个自定义前缀,例如对print语句执行代码的时间,那么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')

 

现在代码执行的时间会自动显示在输出中!是不是超酷的!

获得更多的上下文信息

除了了解负责输出的代码之外,你可能还想知道代码执行的行和文件来自哪个行。要了解代码的上下文,只需要将includeecontext = True添加到ic.configureOutput ()中即可。


from icecream import ic 

def plus_five(num):
    return num + 5

ic.configureOutput(includeContext=True)
ic(plus_five(4))
ic(plus_five(5))

 

现在就可以知道第一个输出是由icecream_example.py文件中的第7行的plus_five函数执行的。

总结

现在我们已经学会了如何使用icecream使打印更具可读性。Icecream是一个很好的调试工具,希望你也会发现它的高效。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值