再见Print,用这个更香!

点击上方“菜鸟学Python”,选“星标”公众号

重磅干货,第一时间送达

小编学习使用Python已经有5-6年啦,使用 Python 开发过程中,总是避免不了 Debug。小伙伴们,你们都怎样 Debug Python 代码,是不是常用 print 大法?

在本文介绍的这个项目中,Debug Python 代码再也不需要 print 了。只要给有疑问的代码加上装饰器,各种信息一目了然,找出错误也就非常简单了。

这个名为 PySnooper 的项目在 GitHub 上已经收获了13.9K+ 的 Star 量 。它类似于有断点和监视功能的调试器。

01

如何安装

安装 PySnooper 的最佳方法是使用 pip:

pip install pysnooper

02

简单案例介绍

该工具使用采用装饰器的形式,将函数的运行过程以日志的形式进行输出,其记录了运行了哪些代码行,运行的时间及运行到当前代码时各变量的值。

代码运行详细信息如下:

可以看到 PySnooper 把整个函数运行的过程都记录了下来,包括:

1).代码文件所在路径、代码行号等信息,以及每一行代码调用时间信息

2).函数内局部变量 gzh_dict 的值

3).函数的 return 返回值

4).函数运行的整个时间

如果不想跟踪整个函数,则可以将相关部分包装在 with 块中:

代码运行情况如下:

03

5大进阶功能

1).将输出重定向到文件

@pysnooper.snoop()  不传参数时,会将调试的信息输出到标准输出。对于单次调试就能解决的 BUG ,这样没有什么问题,但是有一些 BUG 只有在特定的场景下才会出现,需要你把程序放在后面跑个一段时间才能复现。这种情况下,你可以将调试信息重定向输出到某一日志文件中,方便追溯排查。


2).跟踪全局变量

PySnooper 默认是只跟踪函数体内的局部变量,若需要跟踪全局变量需要给 pysnooper.snoop() 加上参数 watch.

从上可知,如果全局变量 gzh_info 的值有变化时,就会被打印出来。pysnooper.snoop() 还可以接收另外一个参数 watch_explode,和 watch 参数相反,它表示除了这几个参数外的其他所有全局变量都监控。

@pysnooper.snoop(watch_explode="gzh_info")
3).设置调试日志的前缀

当使用 PySnooper 跟踪多个函数时,日志输出会显得很乱,不方便查找文件。对于这种情况,PySnooper 提供了一个参数,方便为不同的函数设置不同的标识,方便在查看日志时进行区分日志属于哪个函数。

4).支持多线程调试模式

PySnooper 同样支持多线程的调试,通过设置参数 thread_info=True ,它就会在日志中打印出函数中对应的线程信息。

5).获得程序执行时间

如果希望输出的时间是相对于程序开始运行的时间,使用relative_time = True 即可。

6).不显示和环境相关的信息

如果只想看代码相关的输出信息,设置 normalize= True 就会删除所有与机器相关的数据(路径,时间戳,内存地址),只显示变量信息:

相对于其他 DEBUG 工具,例如 Pycharm 本地打断点调试,在本地用 IDE 的图形化界面调试无疑是最适合的,但是如果需要调试服务器的Python脚本,并且服务器只能通过堡垒机进行登陆访问, Pycharm 的远程调试就不好用了,PySnooper 的优势就体现出来了。

感兴趣的小伙伴赶紧去试试 PySnooper 吧。

万水千山总是情,点个  ????  行不行。

程序员GitHub,现已正式上线!

接下来我们将会在该公众号上,专注为大家分享GitHub上有趣的开源库包括Python,Java,Go,前端开发等优质的学习资源和技术,分享一些程序员圈的新鲜趣事。

推荐阅读:这个GitHub 1400星的Git魔法书火了,斯坦福校友出品丨有中文版贼 TM 好用的 Java 工具类库
超全Python IDE武器库大总结,优缺点一目了然!
秋招来袭!GitHub28.5颗星!这个汇聚阿里,腾讯,百度,美团,头条的面试题库必须安利!
收获10400颗星!这个Python库有点黑科技,竟然可以伪造很多'假'的数据!
牛掰了!这个Python库有点逆天了,竟然能把图片,视频无损清晰放大!


点这里,获取一大波福利
  • 24
    点赞
  • 109
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值