加入收藏 | 设为首页 | 会员中心 | 我要投稿 萍乡站长网 (https://www.0799zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Python里三个高逼格的调试神器

发布时间:2019-10-14 08:46:45 所属栏目:建站 来源:大刘
导读:副标题#e# 调试是开发过程中不可避免的一个环节,在Python中我们使用print、logging、assert等方法进行调试既简单又实用,但毕竟有其局限性。今天这篇文章为大家带来三个工具,其中有Python的内置模块也有第三方库,它们提供了调试代码所需的大部分常用功能

作为一个星标1.2W+的项目,PySnooper的功能肯定不会这么简单,@pysnooper.snoop()中是可以接收参数的,比如我们觉得输出内容太多,可以考虑把信息记录到log日志中,这个功能只需要加一个log文件定位参数就能搞定:

  1. @pysnooper.snoop('file.log') 

@pysnooper.snoop()支持的参数还有很多,分别对应了不同的功能,例如监控自定义表达式、监控底层函数、支持多线程等等,详见项目文档。

此外,pysnooper还支持局部监控,一般来说我们写的代码都比较长,而需要监控的只是其中的一小部分,这时候就可以把需要监控的代码放到一个block里。我们修改下刚才的代码,只对计算最大最小值和中位数的部分进行监控,修改后的代码如下:

  1. import pysnooper 
  2. import random 
  3. def foo(): 
  4.  lst = [] 
  5.  for i in range(10): 
  6.  lst.append(random.randrange(1, 1000)) 
  7.  with pysnooper.snoop(): 
  8.  lower = min(lst) 
  9.  upper = max(lst) 
  10.  mid = (lower + upper) / 2 
  11.  print(lower, mid, upper) 
  12. foo() 

运行之后发现监控信息精简了很多:

  1. New var:....... lst = [562, 341, 552, 353, 628, 302, 430, 188, 955, 108] 
  2. New var:....... i = 9 
  3. 20:02:47.359272 line 21 lower = min(lst) 
  4. New var:....... lower = 108 
  5. 20:02:47.359272 line 22 upper = max(lst) 
  6. New var:....... upper = 955 
  7. 20:02:47.360269 line 23 mid = (lower + upper) / 2 

使用with pysnooper.snoop()模式依然保留了对各种参数的支持,个人认为这种模式更加符合实践需求。

小结:

今天介绍了三个不借助IDE就能方便使用的调试工具,三个工具的调试思路和适用场景也各不相同,大家可以根据需要灵活选用。不过话说回来,我个人最喜欢的还是PySnooper,你最喜欢哪一款呢?

(编辑:萍乡站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读