Python开发过程中进行Debug操作,想必是所有开发者都不可缺少的环节。通常,我们在Debug代码时,一般采用以下几种方式:
但,这些方法都存在无法忽视的痛点:
本文将介绍不同与以上几种方式的极简DeBug方法,仅需要向目标函数添加一个装饰器即可。我们会得到该函数的详细Log信息,其中包含代码执行顺序、变量值变化过程、时间等。接下来让我们了解下PySnooper 的使用方法。
PySnooper适用于调试单个函数,能够方便的感知函数变量的变化过程、当前运行所在代码位置,并支持输出存储为文件。
安装
使用pip进行安装
pip install pysnooper
特点
如下函数实现读取 File.txt文件(文件内容如上),并且使用行号、每行内容构造字典进行存储,字典结构为{行号:当前行的内容,行号:当前行的内容}。
执行如上代码,输出结果如下。我们可以清楚看到执行时间、变量值改变过程及变量发生变化时所对应的的代码、以及返回变量值。
使用pysnooper对函数局部进行Debug
可以将相关部分包含在with pysnooper.snoop()块中,如下
执行如上代码,输出结果如下。我们可以看到for循环过程中每次遍历时,index、line、line_index变量值及其所执行的代码。
使用pysnooper对Debug信息进行重定向
如果Debug信息过长,那么可以将输出保存到指定文件中,如下,我们将Debug信息保存至Debug.log中。
使用pysnooper查看非局部变量值
pysnooper修饰器中使用watch参数查看一个或多个非局部变量的值及改变过程,如下,查看other变量的改变过程。
执行如上代码,输出结果如下。在如下Debug信息中,我们可以看到 “Starting var:.. other = {'age': 27, 'name': 'iTestOps'} ” 信息。
使用pysnooper展开字典或者列表显示它的所有属性值
pysnooper修饰器中使用参数watch_explode,可以展开字典或者列表显示它的所有属性值。
执行如上代码,输出结果如下,可以看出watch_explode能够展开字典的属性值。
使用pysnooper 查看函数中调用的其他函数里变量值
pysnooper修饰器中使用参数depth,输出调试函数所引用的函数的变量值变化过程。
执行如上代码,输出结果如下,我们可以看到get_time()中now_time变量值。
将所有 snoop 行以某个前缀开始
将所有 snoop 行以某个前缀开始,更容易定位和找到,我们使用函数名为前缀,如下。
执行如上代码,输出结果如下,我们可以看到每行Debug日志都含read_file_content前缀。
若感兴趣,欢迎关注、评论支持。
留言与评论(共有 0 条评论) |