侵权投诉

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

2019-04-29 18:30 次阅读

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 = 621: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 = 0Modified var:.. number = 321: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 = 1Modified var:.. remainder = 121: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 = 021: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 bits21:14:32.099769 return 10 return bits

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

文章出处:【微信号:DBDevs,微信公众号:数据分析与开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

使用Django Selenium和JavaScript进行Python测试驱动开发的电子书

 本书从最基础的知识开始,讲解 Web 开发的整个流程,展示如何使用 Python 做测试驱动开发。....
发表于 12-12 08:00 10次 阅读
使用Django Selenium和JavaScript进行Python测试驱动开发的电子书

进位与溢出的区别 二进制如何判断溢出和进位

进位定义: 在基本算术中,进位是一种运算形式,加法运算中,每一数位上的数等于基数时向前一位数进一, 它是标准算法的一部分...
发表于 12-11 18:02 146次 阅读
进位与溢出的区别 二进制如何判断溢出和进位

二进制带符号是怎么计算的

(1)加法 带符号数进行加法运算时,加数与被加数均用补码形式表示,其结果仍为补码,只要结果不超过规定的数表示的范围,也就是只要...
发表于 12-11 17:58 152次 阅读
二进制带符号是怎么计算的

二进制不带符号应该怎么计算

(1) 加法 按照加法运算规则, 从最低位开始逐位相加。例如 (2) 减法 按照减法运算规则, 从最低位开始逐位相减。例如...
发表于 12-11 17:53 144次 阅读
二进制不带符号应该怎么计算

如何理解二进制运算规则 二进制是如何运算的

二进制运算规则 二进制的运算算术运算二进制的加法:0+0=0,0+1=1 ,1+0=1, 1+1=10(向高位进位); 二进制的减法:0-0=0...
发表于 12-11 17:49 227次 阅读
如何理解二进制运算规则 二进制是如何运算的

计算机的二进制概念和进制运算的详细资料简介

本文档的主要内容详细介绍的是计算机的二进制概念和进制运算的详细资料简介。
发表于 12-11 17:34 29次 阅读
计算机的二进制概念和进制运算的详细资料简介

LabVIEW的数字IO详细资料说明

一般数据采集卡上都有DI/O功能,用来实现数据采集的触发、控制及计数等功能。DI/O 按TTL逻辑电....
发表于 12-11 16:23 25次 阅读
LabVIEW的数字IO详细资料说明

如何在keil中生成个人库文件及调用方法

代码积累多了,大家可能都尝试过自己写个库,方便调用,我最初的办法是把常用的函数放到一个个.C文件里头....
发表于 12-11 08:00 23次 阅读
如何在keil中生成个人库文件及调用方法

如何在opencv中进行汉字输出

OPENCV 不支持汉字输出,但可以修改其代码,支持汉字。字符输出在nitFont、cvPutTex....
发表于 12-10 16:22 25次 阅读
如何在opencv中进行汉字输出

什么是原码 原码怎么算及有哪些优缺点

原码(true form)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该...
发表于 12-10 14:58 150次 阅读
什么是原码 原码怎么算及有哪些优缺点

什么是机器数和真值 机器数和真值的关系与区别

计算机在运行数的运算中, 不可避免地会遇到正数和负数, 那么, 在计算机中, 正负符号 是怎样表示的呢? 通常我们将一个二进制数的最...
发表于 12-10 14:44 199次 阅读
什么是机器数和真值 机器数和真值的关系与区别

ascii码怎么算 ascii码是怎么换算的

在微型计算机中, 机器只处理二进制数, 因此, 字母和各种符号也必须按照某种特定的 规则用二进制代码来表示。目前, 世界上最普遍采...
发表于 12-10 14:38 159次 阅读
ascii码怎么算 ascii码是怎么换算的

什么是BCD码 常用的BCD码转换方法

二进制数在计算机中容易实现, 其运算规律也十分简便, 因此, 在计算机中一般都采用 二进制数字系统。但对于人们的习惯来讲, 二进制...
发表于 12-10 14:30 100次 阅读
什么是BCD码 常用的BCD码转换方法

什么是BCD码 常用的BCD码转换方法

二进制数在计算机中容易实现, 其运算规律也十分简便, 因此, 在计算机中一般都采用 二进制数字系统。但对于人们的习惯来讲, 二进制...
发表于 12-10 14:30 160次 阅读
什么是BCD码 常用的BCD码转换方法

变换器与其他典型环节的传递函数详细资料说明

本文档的主要内容详细介绍的是变换器与其他典型环节的传递函数详细资料说明。
发表于 12-10 08:00 15次 阅读
变换器与其他典型环节的传递函数详细资料说明

有限差分法求解二维电位函数的MATLAB程序设计及分析

采用有限差分方程近似地代替偏徽分方程对二维场城中的电位函数进行分析,给出了一种新的处理方法,并设计 ....
发表于 12-10 08:00 31次 阅读
有限差分法求解二维电位函数的MATLAB程序设计及分析

Python核心编程中文第三版PDF电子书免费下载

本书是经典畅销图书《Python 核心编程(第二版)》的全新升级版本,总共分为 3 部分。第 1 部....
发表于 12-10 08:00 30次 阅读
Python核心编程中文第三版PDF电子书免费下载

深度学习入门基于python的理论与实现PDF电子书免费下载

本书是深度学习真正意义上的入门书,深入浅出地剖析了深度学习的原理和相关技术。书中使用Python3,....
发表于 12-09 08:00 37次 阅读
深度学习入门基于python的理论与实现PDF电子书免费下载

ADXL345的数据手册和原理图及测试程序免费下载

ADXL345是一款小而薄的超低功耗3轴加速度计,分辨率高(13位),测量范围达± 16g。数字输出....
发表于 12-09 08:00 54次 阅读
ADXL345的数据手册和原理图及测试程序免费下载

笨办法学Python第三版PDF电子书免费下载

《“笨办法”学Python(第3版)》是一本Python入门书籍,适合对计算机了解不多,没有学过编程....
发表于 12-09 08:00 44次 阅读
笨办法学Python第三版PDF电子书免费下载

为单元测试“正名”

我们有单元测试、增量测试、集成测试、回归测试、冒烟测试等等,名字非常多。谷歌看到这种“百家争鸣”的现....
的头像 腾讯技术工程官方号 发表于 12-08 11:00 339次 阅读
为单元测试“正名”

对于代码规范的一些总结

都说代码是程序员的第二张脸,长时间下来,写的好的代码定会受到大家的尊重。遵循一些简单的规范,写干净一....
的头像 玩转单片机 发表于 12-08 10:21 328次 阅读
对于代码规范的一些总结

傅里叶变化入门教程之傅里叶分析PDF电子书免费下载

 傅里叶,Jean Baptiste Joseph Fourier(简·巴普蒂斯·约瑟夫·傅里叶,1....
发表于 12-06 15:36 57次 阅读
傅里叶变化入门教程之傅里叶分析PDF电子书免费下载

ESP8266_09基于IIC控制的OLED屏幕

上面代码中出现的函数,例如i2c_master_start()、i2c_master_writeBy....
的头像 单片机爱好者 发表于 12-06 15:12 422次 阅读
ESP8266_09基于IIC控制的OLED屏幕

Python密码学编程PDF电子书免费下载

本书主要介绍了加密算法,同时从Python编程的角度来引导读者将加密算法更好地实现。书中不仅讲述了详....
发表于 12-06 08:00 81次 阅读
Python密码学编程PDF电子书免费下载

C语言函数的实验详细资料说明

实验目的和要求(1)掌握C语言函数的定义方法、函数的声明及函数的调用方法。(2)掌握函数实参和形参的....
发表于 12-06 08:00 66次 阅读
C语言函数的实验详细资料说明

具P Laplace算子的分数阶微分方程边值问题解的存在性论文说明

分数阶微积分理论是整数阶微积分理论的推广,发展至今已有300多年的历史。特别是近几十年来,分数阶微分....
发表于 12-05 15:53 57次 阅读
具P Laplace算子的分数阶微分方程边值问题解的存在性论文说明

如何使用谱回归核判别分析实现候机楼室内快速定位算法的论文详细说明

针对机场候机楼客流量大、室内环境复杂多变的特点,提出了一种基于谱回归核判别分析(SRKDA)的室内定....
发表于 12-05 15:27 40次 阅读
如何使用谱回归核判别分析实现候机楼室内快速定位算法的论文详细说明

使用LabVIEW数字波形图显示一个数字信号的步骤详细说明

用digital waveform graph 显示一个数字信号的步骤1.采集一个数字信号。2.构建....
发表于 12-05 14:59 47次 阅读
使用LabVIEW数字波形图显示一个数字信号的步骤详细说明

Python核心编程第三版PDF中文版电子书免费下载

《Python核心编程(第3版)》是经典畅销图书《Python核心编程(第二版)》的全新升级版本,总....
发表于 12-04 08:00 97次 阅读
Python核心编程第三版PDF中文版电子书免费下载

什么是网络爬虫使用Python写网络爬虫的教程说明

网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。传统爬虫从一....
发表于 12-04 08:00 68次 阅读
什么是网络爬虫使用Python写网络爬虫的教程说明

C语言相关文件函数的功能与用法详细说明

fopen(打开文件) 相关函数 open,fclose 表头文件 #include《s....
发表于 12-04 08:00 74次 阅读
C语言相关文件函数的功能与用法详细说明

python的html基本结构及常见文本标签源代码免费下载

本文档的主要内容详细介绍的是python的html基本结构及常见文本标签源代码免费下载。
发表于 12-04 08:00 52次 阅读
python的html基本结构及常见文本标签源代码免费下载

二进制表示的电路图免费下载

本文档的主要内容详细介绍的是二进制表示的电路图免费下载。
发表于 12-03 17:26 67次 阅读
二进制表示的电路图免费下载

OpenCV3计算机视觉Python语言实现第二版PDF电子书免费下载

OpenCV 3是一种先进的计算机视觉库,可以用于各种图像和视频处理操作,通过OpenCV 3 能很....
发表于 12-03 16:19 55次 阅读
OpenCV3计算机视觉Python语言实现第二版PDF电子书免费下载

3个C语言编程易犯的错误

对比过后显然是错误的,大家一眼看出a要写成&a,这没问题。但也有人说可以把*pa改成&pa,这样行吗....
的头像 嵌入式ARM 发表于 12-03 15:47 277次 阅读
3个C语言编程易犯的错误

将基于Python的过去及今后的计划展开讨论

那次大会在马里兰州的那个后来成为了美国国家标准局的地方举行,Warsaw 说,他们能明显感受到 Py....
的头像 嵌入式ARM 发表于 12-03 15:21 461次 阅读
将基于Python的过去及今后的计划展开讨论

OpenCV Python中文版官方教材免费下载

Python 作为一种高效简洁的直译式语言非常适合我们用来解决日常工作的问题。而且它简单易学,初学者....
发表于 12-03 11:49 57次 阅读
OpenCV Python中文版官方教材免费下载

怎样在BeagleBone Black上设置IO Python库

您需要按顺序连接到BeagleBone Black。安装IO Python库。确保您可以访问互联网。....
的头像 39度创意研究所 发表于 12-02 11:02 283次 阅读
怎样在BeagleBone Black上设置IO Python库

激光物理学的PDF电子书免费下载

在本书中我们论述辐射与物质的相互作用,并特别注意它对于典型地存在于激光器中的增益(放大)介质的应用。....
发表于 12-02 08:00 52次 阅读
激光物理学的PDF电子书免费下载

C语言的习题集资料合集免费下载

本文档的主要内容详细介绍的是C语言的习题集资料合集免费下载包括了:第一单元 程序设计和C语言,第二单....
发表于 12-02 08:00 54次 阅读
C语言的习题集资料合集免费下载

Flask Web开发基于Python的Web应用开发实战PDF电子书免费下载

本书不仅适合初级Web开发人员学习阅读,更是Python程序员用来学习高级Web开发技术的优秀参考书....
发表于 12-02 08:00 68次 阅读
Flask Web开发基于Python的Web应用开发实战PDF电子书免费下载

如何使用Twitter API从特定用户获取推文

在真正发生任何事情之前,我们需要一个PyPortal的实例。这将设置URL,用于从该URL返回的js....
的头像 39度创意研究所 发表于 11-29 16:31 418次 阅读
如何使用Twitter API从特定用户获取推文

介绍网络压缩算法,知识蒸馏

那么如何训练一个小网络呢?我们可以先考虑一下在数值分析中,用一个函数S(x)来逼近另外一个函数f(x....
的头像 FPGA开发圈 发表于 11-29 11:30 348次 阅读
介绍网络压缩算法,知识蒸馏

复变函数西安交大第4版PDF电子书免费下载

在我们已经学过的《高等数学》课程中,研究的主要对象是实变函数。理论的探讨和生产实践的发展,又提出了对....
发表于 11-29 08:00 59次 阅读
复变函数西安交大第4版PDF电子书免费下载

西安交大第4版复变函数答案合集免费下载

复变函数就是自变量为复数的函数。本课程研究的主要对象是在某种意义之下可导的复变函数,通常称为解析函数....
发表于 11-29 08:00 55次 阅读
西安交大第4版复变函数答案合集免费下载

怎样使用Python编程和控制Arduino

该项目是在Python和Arduino板之间进行通信的准系统。这种方法与通常的将脚本上传到Ardui....
的头像 39度创意研究所 发表于 11-28 17:52 533次 阅读
怎样使用Python编程和控制Arduino

如何使用Python控制Arduino开发板

尽管承担的项目比通常的初学者闪烁的LED稍大一些在教程中,我们几乎没有涉及到Arduino开发板和类....
的头像 39度创意研究所 发表于 11-28 17:36 584次 阅读
如何使用Python控制Arduino开发板

【转载】如何从零入门人工智能(AI)具体学习步骤和方法

手把手教你设计人工智能芯片及系统(全阶设计教程+AI芯片FPGA实现+开发板)详情链接: 上次我们讲到人工智能的一些应用,...
发表于 11-28 16:20 237次 阅读
【转载】如何从零入门人工智能(AI)具体学习步骤和方法

C语言深度解剖完美PDF电子书免费下载

《C语言深度解剖》是2012年出版的图书,作者是陈正冲。本书作者结合自身多年嵌入式C语言开发经验和平....
发表于 11-28 15:35 71次 阅读
C语言深度解剖完美PDF电子书免费下载

带大家领略sqrt的神奇之处:开平方的7种算法介绍

sqrt()函数,是绝大部分语言支持的常用函数,它实现的是开方运算;开方运算最早是在我国魏晋时数学家....
的头像 算法与数据结构 发表于 11-28 09:29 474次 阅读
带大家领略sqrt的神奇之处:开平方的7种算法介绍

OpenCV官方教程OpenCV Python中文教程免费下载

Python 作为一种高效简洁的直译式语言非常适合我们用来解决日常工作的问题。而且它简单易学,初学者....
发表于 11-27 17:21 59次 阅读
OpenCV官方教程OpenCV Python中文教程免费下载

MATLAB语言程序的基础知识详细说明

本章旨在介绍关于MATLAB的基本知识,使读者可以更好的理解后续章节中的内容。其实,对于MATLAB....
发表于 11-27 16:43 80次 阅读
MATLAB语言程序的基础知识详细说明

基于二阶锥规划的MIMO系统抗信道失配的鲁棒盲分离的资料说明

针对多输入多输出(MIMO)系统中由于信道失配而导致的容量损失和信源恢复性能下降的问题,研究了一种抗....
发表于 11-27 16:43 45次 阅读
基于二阶锥规划的MIMO系统抗信道失配的鲁棒盲分离的资料说明

Finsh的基本使用实验的详细资料说明

Finsh 是RT-Thread 的shell 组件,通过它能够直接在shell 中调用系统函数,访....
发表于 11-27 15:36 66次 阅读
Finsh的基本使用实验的详细资料说明

如何使用随机模拟技术和神经网络讲解随机机会约束的规划问题

为更有效地求解随机机会约束规划问题,提出一种基于克隆选择算法( CSA) 、随机模拟技术及神经网络的....
发表于 11-27 15:02 59次 阅读
如何使用随机模拟技术和神经网络讲解随机机会约束的规划问题

如何使用CircuitPython

如果需要查看驱动器上已使用的空间量并手动删除隐藏的文件,这里是操作方法。首先使用 df 命令列出# ....
的头像 39度创意研究所 发表于 11-27 11:16 647次 阅读
如何使用CircuitPython

单片机C语言如何产生随机数

C语言中有三个通用的随机数发生器,分别为 rand函数、random函数、randomize 函数,....
的头像 玩转单片机 发表于 11-26 14:25 564次 阅读
单片机C语言如何产生随机数

C语言函数为什么不能返回数组?

要知道,C语言结构体通常很小,只有几十到几百字节,增加结构体赋值能力无疑能够大大方便程序员编写代码。....
的头像 电子工程技术 发表于 11-26 11:25 445次 阅读
C语言函数为什么不能返回数组?

电子元器件可靠性工程PDF电子书免费下载

电子元器件的可靠性是各类电子整机及装备可靠性的基础和核心,而在以往从事整机装备制造的工程技术人员对元....
发表于 11-26 08:00 107次 阅读
电子元器件可靠性工程PDF电子书免费下载