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

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

相关文章

  • Loongnix安装PyCharm Community 2020.2.3的教程详解

    Loongnix安装PyCharm Community 2020.2.3的教程详解

    这篇文章主要介绍了Loongnix安装PyCharm Community 2020.2.3的教程详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • 详解DES&3DES算法的原理以及C#和JS的实现

    详解DES&3DES算法的原理以及C#和JS的实现

    DES 全称为 Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法。3DES 算法通过对 DES 算法进行改进,增加 DES 的密钥长度来避免类似的攻击。本文就来聊聊它们的原理与实现吧
    2023-03-03
  • JetPack开发中使用CameraX完成拍照和拍视频功能

    JetPack开发中使用CameraX完成拍照和拍视频功能

    CameraX 是一个 Google 推出的 JetPack 组件。今天给大家分享JetPack之使用CameraX完成拍照和拍视频,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2020-06-06
  • Window下安装JDK1.8+Tomcat9.0.27+Mysql5.7.28的教程图解

    Window下安装JDK1.8+Tomcat9.0.27+Mysql5.7.28的教程图解

    这篇文章主要介绍了Window下安装JDK1.8+Tomcat9.0.27+Mysql5.7.28的教程,本文通过图文并茂的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11
  • 简单介绍HTTP请求方式中8种请求方法

    简单介绍HTTP请求方式中8种请求方法

    这篇文章主要介绍了HTTP请求方式中8种请求方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-09-09
  • Git工作流演示及三种工作方式

    Git工作流演示及三种工作方式

    在项目开发过程中使用Git的方式有三种工作方式,分别是集中式工作流,Git Flow工作流,Forking 工作流。下面主要针对Git工作流进行讲解
    2022-04-04
  • 盘点网络编程必须要知道的基础知识

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

    这篇文章主要介绍了盘点网络编程必须要知道的基础知识,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2020-07-07
  • VSCode Web IDE Coder 安装及使用

    VSCode Web IDE Coder 安装及使用

    Coder是VS Code的Web IDE,分Code Server 和 Coder,Code Server安装在服务器上,通过浏览器打开地址后可以使用一个web版的VS Code,也就是Coder,但VS Code的插件无法使用。这篇文章主要介绍了VSCode Web IDE Coder 安装及使用,需要的朋友可以参考下
    2021-12-12
  • 利用ChatGPT与MindShow制作一个PPT的方法详解

    利用ChatGPT与MindShow制作一个PPT的方法详解

    PPT制作是商务、教育和各种场合演讲的重要组成部分,然而,很多人会花费大量时间和精力在内容生成和视觉设计方面,为了解决这个问题,我们可以利用两个强大的工具——ChatGPT和MindShow,来提高制作PPT的效率,感兴趣的同学可以参考阅读
    2023-06-06
  • 在CODEIGNITER中 在CI中引入外部的JS与CSS呢

    在CODEIGNITER中 在CI中引入外部的JS与CSS呢

    其实不管是在用CI还是ZF都有同样一个问题,就是路径的问题。前期,我在用ZF做CMS时,我在.htaccess文件中设置了如遇到js,css,img等资源文件都不重定向。
    2009-07-07

最新评论