一个Python调试库(python如何调用库)

简介

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,然后打印出对应的xdouble(x)了。

如果希望将标准输出的内容重定向到文件,可以修改

@pysnooper.snoop('log.txt')
def double(a):

    return 2 * a

更多pysnooper用法,请参考其官网文档。

参考资料

  • https://github.com/cool-RR/PySnooper
原文链接:,转发请注明来源!