美文网首页
Python笔记9:代码调试神器PySnooper

Python笔记9:代码调试神器PySnooper

作者: _百草_ | 来源:发表于2022-04-22 18:27 被阅读0次

0. 作用

代码调试工具,在部分场景下,提升代码调试效率

1. 安装

pip install PySnooper

2. 简单使用

以函数为单位进行调试的,它默认只会跟踪函数体内的局部变量


@pysnooper.snoop()

3. 详细使用

3.1 重定向到日志文件

添加传参output=filename

@pysnooper.snoop(output=filename)

3.2 跟踪非局部变量

添加传参watch="参数名"

@pysnooper.snoop(watch="var")
结果展示
  • watch接收一个可迭代对象,如list、tuple
  • watch接收的单个对象,建议使用字符串,否则会报错:TypeError: compile() arg 1 must be a string, bytes or AST object

3.3 跟踪列表或字典的所有项/属性

添加传参watch_explode=("a",)

# func()添加装饰器
@pysnooper.snoop(output=filename, watch_explode=("a", "dict2"))
结果展示

3.4 跟踪函数深度

添加传参depth=2,默认1

展示结果

3.5 设置调试日志的前缀

添加传参prefix
方便为不同的函数添加不同的标志,以便区分

@pysnooper.snoop(output=filename, prefix="百草:")
结果展示

3.6 设置最大输出长度

添加传参max_variable_length,默认100
默认情况下,PySnooper 输出的变量和异常信息,如果超过 100 个字符,被会截断为 100 个字符
设置None,则表示从不拦截

拦截后截图

3.7 支持多线程调试模式

添加传参thread_info=True,默认False

@pysnooper.snoop(output=filename, thread_info=True)
def func():
  ...
效果图

3.8 支持自定义对象的输出

添加传参custom_repr,接收元组对象,默认空元组
元组对象中,可以定义:指定特定类型的对象以特定格式进行输出

方法一:(XX类型,custom_repr_func自定义函数)

PySnooper 在打印对象的调试信息时,会逐个判断它是否是 XX类型的对象,若是,就将该对象传入custom_repr_func函数中,由该函数来决定如何显示这个对象的信息。
注:XX类型,可以是类即自定义数据类型,也可以是基本数据类型,如list

custom_repr=(type1, custom_repr_func1) 结果展示

方法二:(判断条件,custom_repr_func自定义函数)

image.png

注:

  1. Python 代码调试神器:PySnooper
  2. 官网:https://github.com/cool-RR/PySnooper

相关文章

网友评论

      本文标题:Python笔记9:代码调试神器PySnooper

      本文链接:https://www.haomeiwen.com/subject/deaisrtx.html