软硬件环境
- windows 10 64bit
- anaconda3 with python 3.7.4
- pysnooper
视频看这里
此处是youtube
的播放链接,需要科学上网。喜欢我的分享,记得订阅我的频道,点赞并分享,谢谢。
pysnooper简介
PySnooper
是一个用于代码调试的一个第三方库,源码地址是 https://github.com/cool-RR/PySnooper,项目简介中只有一句话,Never use print for debugging again
。相信很多人,特别是新手都是用print
来进行代码调试的,那这个项目就能让你摆脱print
语句,让你的代码调试更加高效。
安装
我们还是使用pip
安装
pip install pysnooper
代码实践
这里简单写个函数double
,在函数double
加上装饰器@pysnooper.snoop()
import pysnooper
@pysnooper.snoop()
def double(a):
return 2 * a
if __name__ == '__main__':
for x in range(5):
double(x)
执行结果如下
C:\Users\admin\Anaconda3\python.exe D:/xugaoxiang/blog/py_snooper.py
Source path:... D:/xugaoxiang/blog/py_snooper.py
Starting var:.. a = 0
22:33:48.473690 call 18 def double(a):
22:33:48.474685 line 19 return 2 * a
22:33:48.474685 return 19 return 2 * a
Return value:.. 0
Starting var:.. a = 1
22:33:48.474685 call 18 def double(a):
22:33:48.474685 line 19 return 2 * a
22:33:48.474685 return 19 return 2 * a
Return value:.. 2
Starting var:.. a = 2
22:33:48.474685 call 18 def double(a):
22:33:48.474685 line 19 return 2 * a
22:33:48.474685 return 19 return 2 * a
Return value:.. 4
Starting var:.. a = 3
22:33:48.474685 call 18 def double(a):
22:33:48.474685 line 19 return 2 * a
22:33:48.474685 return 19 return 2 * a
Return value:.. 6
Starting var:.. a = 4
22:33:48.474685 call 18 def double(a):
22:33:48.474685 line 19 return 2 * a
22:33:48.474685 return 19 return 2 * a
Return value:.. 8
Process finished with exit code 0
可以看到,for
循环执行的每一步及其double
函数的返回值。如果没有使用pysnooper
的话,那可能就是在for
循环中加入print
,然后打印出对应的x
及double(x)
了。
如果希望将标准输出的内容重定向到文件,可以修改
@pysnooper.snoop('log.txt')
def double(a):
return 2 * a
更多pysnooper
用法,请参考其官网文档。