答应我!忘了他吧!不要再用print了,我用冰激凌ic调试Python养你
2021/7/5 22:20:55
本文主要是介绍答应我!忘了他吧!不要再用print了,我用冰激凌ic调试Python养你,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
事情是这样的
望着窗外,太阳在乌云背后努力想把阳光撒向人间
雨过天青云破处吹来的缕缕微风拂过你的脸颊
迎着微风贪婪的深吸一口,放下键盘,回想你这一生
最依赖的python的函数是什么
emmm,我猜一定是print()
从入坑案例 print('Hello World') 开始
你的代码越写越多,逻辑越来越复杂
但是在代码的寻常巷陌之间
却总是穿插着大量的print()调试语句
输出的结果,让人欢喜让人忧
答应我,从今天开始,忘了他
以后用ice cream
icecream调试工具
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:访问函数
#案例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
#引入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:访问字典
建一个以老大命名的字典
#示例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:访问对象
#示例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:精准调试代码
- 我们在调试业务逻辑比较复杂的代码的时候
- 为了验证业务在哪个逻辑或者哪一行输出有问题了。
- 一般都在要监控的代码下面
- 加上 print('aaa')、print('bbbb')或者print('-------'),别说你没这么干过
- 搞的代码非常混乱,而且输出也不够精准。
#示例4:记录代码位置 def position(name): if name == 'kobe': #啪啪啪,业务代码一大堆 ic() else: #啪啪啪,业务代码又一大堆 ic() if __name__ == '__main__': position('kobe') position('micheal')
print() 和 ic()访问方法进行对比:
- 我们可以精确的输出业务代码的位置。
案例5:始乱终弃很方便
- 当我们使用print()进行python调试的时候
- 加了一大堆又臭又长的 print('aaa')、print('bbbb') 或者 print('-----')
- 当项目正式上线的时候,肯定要去注释掉这些test输出
- 这个时候,我们才发现:“他们都老了吗,他们在哪里呀~~~”
- 找不着了,是吧?!这时候又要翻箱倒柜的去找来注释。
- 如果我们用icecream进行调试
- 只要开头加上一句
ic.disable() #关闭ic调试。[默认开启]
- 你所有的添加的ic输出
- 相当于你的历史渣男记录
- 全部洗白。
如下 ↓ ↓ ↓
from icecream import ic #关闭所有ic调试输出 ic.disable() #业务代码一大堆,啪啪啪... #...
- 如果想要使用ic输出
- 只要开头启用就好了。
ic.enable() #启用ic调试
案例6:自定义ic输出很方便
icecream 的默认输出格式: ic| testic.py:28 in position() at 14:28:51.172 ic| testic.py:31 in position() at 14:28:51.190
- 包括前缀:ic
- 文件名:testic.py
- 代码位置:28行
- 函数:position()
1、修改前缀:加上自定义内容
ic.configureOutput(prefix='lex的爬虫 | ') ic('运行到这里了...')
输出效果如下:
2、输出代码运行的时间
- 有时候,进行代码输出调试的时候
- 需要知道代码运行该位置时的精确时间
- 我们可以自定义icecream来实现带时间的输出。
#定义一个返回当前时间的函数 from datetime import datetime def now(): return f'[{datetime.now()}]' #将函数返回值,配置进ic里 ic.configureOutput(prefix=now) ic('运行到这里了...')
输出结果如下:
---------The End--------
这篇关于答应我!忘了他吧!不要再用print了,我用冰激凌ic调试Python养你的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27Python编程基础教程
- 2024-12-27Python编程基础指南
- 2024-12-24Python编程入门指南
- 2024-12-24Python编程基础入门
- 2024-12-24Python编程基础:变量与数据类型
- 2024-12-23使用python部署一个usdt合约,部署自己的usdt稳定币
- 2024-12-20Python编程入门指南
- 2024-12-20Python编程基础与进阶
- 2024-12-19Python基础编程教程
- 2024-12-19python 文件的后缀名是什么 怎么运行一个python文件?-icode9专业技术文章分享