欢迎访问Python每天3分钟系列。
每天花3分钟时间,学习或温习一个Python知识点。今天是第046篇:
调试小能手icecream
我们经常会使用print()
函数打印代码执行的结果或者中间值。目的是为了测试代码或者调试代码执行过程。
看这个函数:
def square_of(num):
return num*num
为了查看函数执行结果,我们可能会写如下代码:
print(square_of(2))
print(square_of(3))
print(square_of(4))
但这样打印出的结果并不明显:
4
9
16
如果程序有很多打印输出,可能会看不出这是什么意思。最好打印的更加全面点:
print('2的平方:', square_of(2))
print('3的平方:', square_of(3))
print('4的平方:', square_of(4))
这时候结果要清楚多了:
2的平方: 4
3的平方: 9
4的平方: 16
但这样很麻烦!为了解决这个麻烦,现在请出今天的主角: icecream。
安装
python -m pip install icecream
安装可能需要一点时间:
Collecting icecream
Downloading icecream-2.1.1-py2.py3-none-any.whl (8.1 kB)
Collecting asttokens>=2.0.1
Downloading asttokens-2.0.5-py2.py3-none-any.whl (20 kB)
Collecting pygments>=2.2.0
Downloading Pygments-2.11.2-py3-none-any.whl (1.1 MB)
|████████████████████████████████| 1.1 MB 33 kB/s
Collecting executing>=0.3.1
Downloading executing-0.8.2-py2.py3-none-any.whl (16 kB)
Collecting colorama>=0.3.9
Downloading colorama-0.4.4-py2.py3-none-any.whl (16 kB)
Requirement already satisfied: six in /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages (from asttokens>=2.0.1->icecream) (1.16.0)
Installing collected packages: pygments, executing, colorama, asttokens, icecream
Successfully installed asttokens-2.0.5 colorama-0.4.4 executing-0.8.2 icecream-2.1.1 pygments-2.11.2
基本用法
from icecream import ic
def square_of(num):
return num*num
ic(square_of(2))
ic(square_of(3))
ic(square_of(4))
现在不用使用print()
了,使用ic()
,它会自动打印出相关的函数名,参数等信息,可以说是一目了然:
ic| square_of(2): 4
ic| square_of(3): 9
ic| square_of(4): 16
其他用法
除此之外,还可以打印字典信息:
my_dict = {
'name': 'Chris',
'age': 33
}
ic(my_dict['name'])
打印结果会清清楚楚的写出字典名字和key:
ic| my_dict['name']: 'Chris'
也可以打印对象的属性:
class Dog():
num_legs = 4
tail = True
dog = Dog()
ic(dog.tail)
打印结果:
ic| dog.tail: True
关闭ic
如果使用print()
,我们在调试完成后,还需要注释掉相关的打印语句,否则会输出很多不必要的信息,也会让程序变慢。
使用icecream
就没这个烦恼了,因为我们可以用一句话关闭所有的icecream
打印:
ic.disable()
加上这一句,整个世界清净了,不需要一句句去注释掉打印语句:

三者对比
icecream
可以说是一个不错的print()
的升级版,有上面说的诸多好处,更加方便调试程序,很值得大家学习和尝试。但它的主要应用场景是调式,而不应该替代更加强大的logging
框架。可以这么说:
-
print()
最简单 -
icecream
处于中间 -
logging
在三者中间最强大
原文链接:https://www.afxvip.com/5634.html,转载请注明出处。
评论0