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

 更新时间:2019年04月29日 10:10:33   投稿:mrr  
本文给大家分享GitHub 热门:别再用 print 输出来调试代码了的详细解说,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

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

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

相关文章

  • BurpSuite超详细安装和基础使用教程(已破解)

    BurpSuite超详细安装和基础使用教程(已破解)

    Burp Suite 是用于攻击web 应用程序的集成平台包含了许多Burp工具,它主要用来做安全性渗透测试,可以实现拦截请求、Burp Spider爬虫、漏洞扫描(付费)等类似Fiddler和Postman但比其更强大的功能,今天给大家介绍下BurpSuite安装破解使用教程,感兴趣的朋友一起看看吧
    2022-10-10
  • Prometheus的安装和配置教程详解

    Prometheus的安装和配置教程详解

    这篇文章主要介绍了Prometheus的安装和配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • 配置Git并从GitHub上克隆项目

    配置Git并从GitHub上克隆项目

    这篇文章介绍了配置Git并从GitHub上克隆项目的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • 5个ChatGPT功能帮助你提升日常编码效率

    5个ChatGPT功能帮助你提升日常编码效率

    ChatGPT 作为最快完成亿活用户的应用,最近真的是火出天际了。今天分享5个 ChatGPT 功能,来提升我们的日常工作以及如何使用它提高代码质量
    2023-02-02
  • PHP、JAVA、.NET这三种技术的区别分析

    PHP、JAVA、.NET这三种技术的区别分析

    这篇文章主要介绍了PHP、JAVA、.NET这三种技术的区别分析,本文从多个方面介绍、对比了PHP、JAVA、.NET这三种技术,需要的朋友可以参考下
    2014-08-08
  • matlab读取串口数据并显示曲线的实现示例

    matlab读取串口数据并显示曲线的实现示例

    这篇文章主要介绍了matlab读取串口数据并显示曲线的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • UTC时间、GMT时间、本地时间、Unix时间戳的具体使用

    UTC时间、GMT时间、本地时间、Unix时间戳的具体使用

    本文主要介绍了UTC时间、GMT时间、本地时间、Unix时间戳的具体使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • MobaXterm详细使用图文教程(MobaXterm连接Linux服务器)

    MobaXterm详细使用图文教程(MobaXterm连接Linux服务器)

    这篇文章主要介绍了MobaXterm详细使用教程,介绍一下如何设置并用MobaXterm来连接Linux服务器,本文介绍了三种连接方式:SSH,FTP,serial,以及几个有用的设置和命令,需要的朋友可以参考下
    2023-05-05
  • GBK字符编码(字符集)缺陷导致web安全漏洞

    GBK字符编码(字符集)缺陷导致web安全漏洞

    很多时候,一个web站点,选择什么样的字符编码,我们不会太过在意的。象中文网站,我们一般用gb2312,gbk,gb18030,也可以用utf-8。但是,可能我们不知道,选择不同编码,可能因此导致程序本身设计缺陷
    2016-06-06
  • 做一个优秀程序员应该知道的15件事

    做一个优秀程序员应该知道的15件事

    这篇文章主要介绍了做一个优秀程序员应该知道的15件事,写的很好,需要的朋友可以参考下
    2014-07-07

最新评论