望着窗外,太阳在乌云背后努力想把阳光撒向人间
雨过天青云破处吹来的缕缕微风拂过你的脸颊
迎着微风贪婪的深吸一口,放下键盘,回想你这一生
最依赖的python的函数是什么
emmm,我猜一定是print()
从入坑案例 print('Hello World') 开始
你的代码越写越多,逻辑越来越复杂
但是在代码的寻常巷陌之间
却总是穿插着大量的print()调试语句
输出的结果,让人欢喜让人忧
答应我,从今天开始,忘了他
以后用ice cream
1、安装 pip install icecream
pip install icecream PS C:\Users\pacer> 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 executing>=0.3.1 Downloading executing-0.6.0-py2.py3-none-any.whl (12 kB) Requirement already satisfied: pygments>=2.2.0 in d:\python36\lib\site-packages (from icecream) (2.9.0) Requirement already satisfied: colorama>=0.3.9 in d:\python36\lib\site-packages (from icecream) (0.4.3) Requirement already satisfied: six in d:\python36\lib\site-packages (from asttokens>=2.0.1->icecream) (1.11.0) Installing collected packages: executing, asttokens, icecream Successfully installed asttokens-2.0.5 executing-0.6.0 icecream-2.1.1
2、调用方法
from icecream import ic ic('test')
下面我们通过几个比对案例,来详细介绍一下 ice cream 到底比 print() 强在哪里。
#案例1:计算平方数 def pingfang(number): return number*number
如果我们需要调试函数,获取2,3,4的平方数。那么输出结果,需要这么写
print(pingfang(2)) print(pingfang(3)) print(pingfang(4))
输出结果如下:
4 9 16
输出结果并不清晰,输入参数都看不见。
优化一下:
print('2的平方是:',pingfang(2)) print('3的平方是:',pingfang(3)) print('4的平方是:',pingfang(4))
输出结果如下:
2的平方是:4 3的平方是:9 4的平方是:16
#引入icecream模块 代替print from icecream import ic def pingfang(number): return number*number #使用ic进行调试 ic(pingfang(2)) ic(pingfang(3)) ic(pingfang(4))
输出结果如下:
ic| pingfang(2): 4 ic| pingfang(3): 9 ic| pingfang(4): 16
输出结果被安排的明明白白。
建一个以老大命名的字典
#示例2:科比字典访问 kobe_dict = { 'name': 'KobeBryant', 'team': 'LALakers', 'number': 24, 'halloffame' : True }
print() 和 ic()访问方法进行对比:
#print方法 print(kobe_dict['team']) #ic方法 ic(kobe_dict['team'])
输出结果对比:
#print输出 LALakers #ic输出 ic| kobe_dict['team']: 'LALakers'
高下立判!!!
#示例3:湖人类 class Lakers(): city = 'los angles' player = 'kobe' NBA = True
print() 和 ic()访问方法进行对比:
#print方法输出 lakers=Lakers() print(lakers.city) print(lakers.NBA) #ic方法输出 ic(lakers.city) ic(lakers.NBA)
输出结果对比如下:
los angles True ic| lakers.city: 'los angles' ic| lakers.NBA: True
#示例4:记录代码位置 def position(name): if name == 'kobe': #啪啪啪,业务代码一大堆 ic() else: #啪啪啪,业务代码又一大堆 ic() if __name__ == '__main__': position('kobe') position('micheal')
print() 和 ic()访问方法进行对比:
ic.disable() #关闭ic调试。[默认开启]
如下 ↓ ↓ ↓
from icecream import ic #关闭所有ic调试输出 ic.disable() #业务代码一大堆,啪啪啪... #...
ic.enable() #启用ic调试
icecream 的默认输出格式: ic| testic.py:28 in position() at 14:28:51.172 ic| testic.py:31 in position() at 14:28:51.190
1、修改前缀:加上自定义内容
ic.configureOutput(prefix='lex的爬虫 | ') ic('运行到这里了...')
输出效果如下:
2、输出代码运行的时间
#定义一个返回当前时间的函数 from datetime import datetime def now(): return f'[{datetime.now()}]' #将函数返回值,配置进ic里 ic.configureOutput(prefix=now) ic('运行到这里了...')
输出结果如下:
---------The End--------