GitHub 热门:别再用 print 输出来调试代码了

所属分类: 网络编程 / 其它综合 阅读数: 941
收藏 0 赞 0 分享

4 月 23 日,GitHub 每日趋势榜第一位是一个 Python ,相关项目:PySnooper。

该项目很快获取 2200 Star。

PySnooper 是个什么东西?

如果你写的 Python 代码不能按如期那样运行,你会绞尽脑汁想为啥出错了。虽然你希望有支持断点的成熟调试器,但或许你现在不想去设置这样的调试器。

你想知道哪些行代码是正常运行,哪些行不正常。据说大多数人会在可疑位置使用 print 输出语句。

其实 PySnooper 的作用有点类似,你不用小心谨慎地用 print 输出语句,只需在想调试的函数中引入一个装饰器。然后得到函数的详细日志,包括运行了哪些行、何时运行,以及何时更改了局部变量。

为什么 PySnooper 能从其他智能调试工具中脱颖而出?

因为你可以在不需要进行任何设置的情况下将其用于糟糕的、庞大的企业代码库中。只需打开装饰器(如下示例所示),并将输出重定向到一个专用的日志文件,将日志文件路径指定为第一个参数。

使用范例

范例是一个把数字转成二进制的函数。

import pysnooper
@pysnooper.snoop()
def number_to_bits(number):
  if number:
    bits = []
    while number:
      number, remainder = divmod(number, 2)
      bits.insert(0, remainder)
    return bits
  else:
    return [0]
number_to_bits(6)

输出范例

Starting var:.. number = 6
21:14:32.099769 call     3 @pysnooper.snoop()
21:14:32.099769 line     5   if number:
21:14:32.099769 line     6     bits = []
New var:....... bits = []
21:14:32.099769 line     7     while number:
21:14:32.099769 line     8       number, remainder = divmod(number, 2)
New var:....... remainder = 0
Modified var:.. number = 3
21:14:32.099769 line     9       bits.insert(0, remainder)
Modified var:.. bits = [0]
21:14:32.099769 line     7     while number:
21:14:32.099769 line     8       number, remainder = divmod(number, 2)
Modified var:.. number = 1
Modified var:.. remainder = 1
21:14:32.099769 line     9       bits.insert(0, remainder)
Modified var:.. bits = [1, 0]
21:14:32.099769 line     7     while number:
21:14:32.099769 line     8       number, remainder = divmod(number, 2)
Modified var:.. number = 0
21:14:32.099769 line     9       bits.insert(0, remainder)
Modified var:.. bits = [1, 1, 0]
21:14:32.099769 line     7     while number:
21:14:32.099769 line    10     return bits
21:14:32.099769 return   10     return bits

有兴趣的童鞋,请收藏:

https://github.com/cool-RR/PySnooper

好了,本文就给大家介绍到这里,希望对大家有所帮助!

更多精彩内容其他人还在看

详解VScode自动补全CSS3前缀插件以及配置无效的解决办法

这篇文章主要介绍了详解VScode自动补全CSS3前缀插件以及配置无效的解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

2020史上最全IDEA插件总结(推荐收藏)

这篇文章主要介绍了2020史上最全IDEA插件总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

IDEA开启Run Dashboard的配置详解

这篇文章主要介绍了IDEA开启Run Dashboard的配置详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

VSCode + WSL 2 + Ruby环境搭建图文详解

这篇文章主要介绍了VSCode + WSL 2 + Ruby环境搭建,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Python和Go成为2019年最受欢迎的黑客工具(推荐)

这篇文章主要介绍了Python和Go成为2019年最受欢迎的黑客工具,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

SHA:安全散列算法简析 附实例

SHA (Secure Hash Algorithm,译作安全散列算法) 是美国国家安全局 (NSA) 设计,美国国家标准与技术研究院(NIST) 发布的一系列密码散列函数
收藏 0 赞 0 分享

有关微信的小程序和小游戏的区别

这篇文章主要介绍了有关微信的小程序和小游戏的区别,本文通过图文文字相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

程序员鼓励师插件Rainbow Fart(彩虹屁)

这篇文章主要介绍了程序员鼓励师插件Rainbow Fart(彩虹屁)的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

盘点网络编程必须要知道的基础知识

这篇文章主要介绍了盘点网络编程必须要知道的基础知识,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

fastjson到底做错了什么?为什么会被频繁爆出漏洞?(推荐)

前段时间,fastjson被爆出过多次存在漏洞,很多文章报道了这件事儿,并且给出了升级建议。本文给大家分享fastjson的releaseNote以及部分源代码。感兴趣的朋友跟随小编一起看看吧
收藏 0 赞 0 分享
查看更多