文章目录
1.icecream简介
这是一个调试输出插件,相比于print函数,它可以自动优雅地输出各种变量类型,它会输出变量的位置,它可以输出函数的值,它还可以将值输出写入日志中。
通过引入icecream包,我们就可以在程序中更加简单地优雅地输出调试变量和函数的值,但是它和print函数一样,没有解决调试的侵入性问题,会产生调试代码
1.1安装
pip install icecream
1.2导入模块包
from icecream import ic
1.3调试
- 调试变量
from icecream import ic
a = "测试"
b = 123
ic(a)
ic(b)
ic| a: ‘测试’
ic| b: 123
- 调试函数
from icecream import ic
def test01(a: int, b: int):
return max(a, b)
ic(test01(5, 81))
ic| test01(5, 81): 81
- 如果你想要找到执行代码的位置
def hello(user):
if user:
ic()
else:
ic()
ic(hello("heel"))
ic| icecream_lianx.py:19 in hello() at 05:51:43.987
ic| hello(“heel”): None
- 自定义输出前缀
from icecream import ic
import time
from datetime import datetime
def time_format():
return f'{datetime.now().strftime("%Y-%m-%d %H:%M:%S")}|> '
# 通过设置ic对象中的 configureOutput 函数中的prefix参数,将prefix设置为自己定义的函数即可
ic.configureOutput(prefix=time_format)
for _ in range(3):
time.sleep(1)
ic('Hello')
2021-03-23 13:54:59|> ‘Hello’
2021-03-23 13:55:00|> ‘Hello’
2021-03-23 13:55:01|> ‘Hello’
- 执行代码所在的行或者是代码所在的文件
from icecream import ic
def my_func(string):
return string + "学习Python"
ic.configureOutput(includeContext=True)
ic(my_func("测试"))
2021-03-23 14:00:05|> icecream_lianx.py:29 in
my_func(“测试”): ‘测试学习Python’
2.icecream源码解释
1.icecream的参数
def configureOutput(self, prefix=_absent, outputFunction=_absent,
argToStringFunction=_absent, includeContext=_absent):
- prefix :输出的前缀,比如需要在控制台中输出执行的日期,需要编写一个日期格式的方法/变量接受,然后使用ic.configureOutput(prefix=所定义的变量)
- outputFunction:修改输出函数
# 例1
def fun1(a):
a = fun2(a)
print