我们先来安装这个模块
cmd模式中进入c:\Python27\Script目录下,执行
pip install PySnooper
稍等片刻,安装完成
我们进入cmd测试导入这个模块
import PySnooper
没有提示任何信息,安装成功!
这个截图中后面一个导入是成功,前面一个导入不成功
后面这个是我们安装之后的操作。前面这个是我还没有安装,就直接执行导入的操作,有些人以为这个是程序自带的模块。
我们现在制做+一个打印变量的值的程序
可见,只需要导入PySnooper模块,并且给函数加上装饰器@pysnooper.snoop(),我们就可以实现对一个Python函数的监听(调试)。
在上面这个例子中,根据输出结果,我们可以得到:
程序执行步骤的顺序,比如执行结果的第2行告诉我们,在09:19:17.146000 line这一时刻执行了def test()这一行代码。
程序中变量的值的变化情况,比如执行结果的第9行告诉我们,局部变量number此时的值发生了变化,变成了3。
PySnooper支持灵活多样的程序调试,包括但不限于:
给函数添加装饰器@pysnooper.snoop(),完成对函数的监听。
使用with pysnooper.snoop()语句,实现对程序块(block),即一行或者多行程序进行监听。
使用@pysnooper.snoop(‘/my/log/file.log’),将监听结果重定向到文件系统。
监听非局部变量的值:
@pysnooper.snoop(variables=('foo.bar','self.whatever'))
监听一个列表或者字典变量的所有元素或者属性:
@pysnooper.snoop(watch=('foo.bar','self.x["whatever"]'))
深度监听——监听函数中的行所调用的其他函数:
@pysnooper.snoop(depth=2)
在多线程程序中,指定监听哪些线程:
@pysnooper.snoop(thread_info=True)
PySnooper的更多高级用法参见:cool-RR/PySnooper
领取专属 10元无门槛券
私享最新 技术干货