一、背景
我们在进行代码调试时,通常使用两种方式。
- print 输出调试的内容或者标识
- 通过断点调试debug
但是我想知道代码的中间的每一行程序运行后的结果,方便的知道每一行程序运行后的结果,而不需要再手动增加 print 展示过程数据、调试程序
Python 的第三方调试库**pysnooper
**。通过装饰器轻松搞定
二、示例 pysnooper`
pip install pysnooper
-
示例一
跟踪整个函数import pysnooper @pysnooper.snoop() def number_to_bits(number): for i in range(4): print(i) number_to_bits(2)
-
示例二
跟踪相关部分import pysnooper import random def foo(): lst = [] for i in range(10): lst.append(random.randrange(1, 1000)) with pysnooper.snoop(): lower = min(lst) upper = max(lst) mid = (lower + upper) / 2 print(lower, mid, upper) foo()
-
三、方法
- 如果标准错误输出难以获得,或者太长了,那么可以将输出定位到本地文件:
@pysnooper.snoop('/my/log/file.log')
- 查看一些非本地变量的值:
@pysnooper.snoop(variables=('foo.bar', 'self.whatever'))
- 展示函数调用的函数的监听行
@pysnooper.snoop(depth=2)
- 将所有 监听行以某个前缀开始,更容易定位和找到:
@pysnooper.snoop(prefix='ZZZ ')
- 高级更多