一般情况下,在编写 Python 代码时,如果想弄清楚为什么 Python 代码没有按照预期执行的原因,比如你想知道哪些是正在运行,哪些没有运行,以及局部变量的值是什么...通常我们会使用包含断点和观察模式等功能成熟的调试器,或者直接使用 print 语句打印出来。

今天,猿妹和大家分享一个“贫民版”调试工具——PySnooper

PySnooper允许你执行以上相同的操作,只需为要调试的函数添加一个装饰器即可,而不需要构建正确的 print 打印。你还将得到函数的详细日志,包括运行了哪些代码行、何时运行以及何时更改了局部变量。

PySnooper 使用起来十分简单,开发者可以在任何庞大的代码库中使用它,而无需进行任何设置。你只需添加装饰器,并为日志输出地址指定路径,方法是将其路径指定为***个参数。

目前,PySnooper在GitHub上已经获得 7047 个Star,371 个Fork(GitHub地址:https://github.com/cool-RR/PySnooper)

示例

以下编写了一个函数,通过返回一个二进制列表。我们只需要通过添加@pysnooper.snoop()装饰器就可以了:

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

15:29:11.327032 call         4 def number_to_bits(number):

15:29:11.327032 line         5     if number:

15:29:11.327032 line         6         bits= []

New var:....... bits= []

15:29:11.327032 line         7         while number:

15:29:11.327032 line         8             number, remainder=divmod(number, 2)

New var:....... remainder=0

Modified var:.. number=3

15:29:11.327032 line         9             bits.insert(0, remainder)

Modified var:.. bits= [0]

15:29:11.327032 line         7         while number:

15:29:11.327032 line         8             number, remainder=divmod(number, 2)

Modified var:.. number=1

Modified var:.. remainder=1

15:29:11.327032 line         9             bits.insert(0, remainder)

Modified var:.. bits= [1, 0]

15:29:11.327032 line         7         while number:

15:29:11.327032 line         8             number, remainder=divmod(number, 2)

Modified var:.. number=0

15:29:11.327032 line         9             bits.insert(0, remainder)

Modified var:.. bits= [1, 1, 0]

15:29:11.327032 line         7         while number:

15:29:11.327032 line        10         return bits

15:29:11.327032 return      10         return bits

Return value:.. [1, 1, 0]

特性

stderr,则可以将选择输出到指定文件:

@pysnooper.snoop('/my/log/file.log')

查看一些非局部变量的变量值:

@pysnooper.snoop(variables=('foo.bar', 'self.whatever'))

显示函数调用的函数的snoop行:

@pysnooper.snoop(depth=2)

【责任编辑:庞桂玉 TEL:(010)68476606】

点赞 0

python代码调试工具_我猜你需要这个Python调试工具相关推荐

  1. 决策树原理实例(python代码实现)_决策树原理实例(python代码实现)

    决策数(Decision Tree)在机器学习中也是比较常见的一种算法,属于监督学习中的一种.看字面意思应该也比较容易理解,相比其他算法比如支持向量机(SVM)或神经网络,似乎决策树感觉"亲 ...

  2. python代码书写_如何优雅的书写Python代码, python使用小技巧

    博客链接 文章目录 Python使用技巧 变量命名技巧 用有意义易读的命名 同类型使用相同词汇 可搜索的名字 自我描述的变量 不要取隐晦的名字 精简不重复 默认参数代替运算和条件 实用小窍门 变量值交 ...

  3. python 代码换行_你一定不知道的Python小技巧,提升你Python代码的可读性

    Python的初学者,开发者都应该知道的代码可读性提高技巧,本篇主要介绍了如下内容: PEP 8是什么以及它存在的原因 为什么你应该编写符合PEP 8标准的代码 如何编写符合PEP 8的代码 为什么我 ...

  4. python代码规范化_数据标准化方法及其Python代码实现

    数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间.目前数据标准化方法有多种,归结起来可以分为直线型方法(如极值法.标准差法).折线型方法(如三折线法).曲线型方法 ...

  5. 全国python一级考试_全国青少年软件编程(python)等级考试试卷(一级)

    下列选项中可以获取Python整数类型帮助的是 A.>>> help(float)B.>>> dir(str)C.>>> help(int)D.& ...

  6. google python代码规范_如何用好python编码规范,写一手漂亮的代码

    前一段时间在编写python 代码的时候编辑器中一直在提示规范问题,因为强迫症的原因,我决定遵循python 的编码规范去编码,然后把需要注意的点记录下来, 帮助自己和大家一起成长. 这是我的main ...

  7. python函数能否增强代码可读性_总结的几个Python函数方法设计原则

    在任何编程语言中,函数的应用主要出于以下两种情况: 1.代码块重复,这时候必须考虑用到函数,降低程序的冗余度 2.代码块复杂,这时候可以考虑用到函数,增强程序的可读性 当流程足够繁杂时,就要考虑函数, ...

  8. python 逐行调试工具_在线编译或编辑Python的5个最佳工具

    离线Python编辑器和编译器都具有许多功能,但是在线编译器通常在功能上受到限制,并试图满足特定需求而不是满足所有需求,其中在线编译大多数是免费的,所以也受到开发者的热爱. 在本文中,我们将浏览各种狂 ...

  9. python 代码分块_[代码全屏查看]-python多进程分块读取文件

    [1].[代码] [Python]代码 # -*- coding: GBK -*- import urlparse import datetime import os from multiproces ...

最新文章

  1. RESTful之异常处理 Exceptions
  2. 2014.12.22 几个有用的oracle正则表达式
  3. 互联网大佬马老师于昨日教师节正式卸任,让位现任CEO张勇;华为发布新一代CloudLink视讯解决方案,普惠4K+AI;联通……...
  4. Android Studio3.2.1升级刨坑记录
  5. Web Service Software Factory 入门
  6. OpenCV2:Mat介绍及常见用法
  7. android拷贝文件到内部存储,将文件保存在内部存储android中
  8. 汉字注音符号学习(引用自维基百科)
  9. JavaScript 模块化编程
  10. 2022年天津专升本报考专业对口限制目录,升本专业课如何备考~
  11. js检测PDF插件 Adobe Reader是否安装
  12. 4G 优盘格式化后变4M 利用量产工具修复~~~
  13. Python 网络数据采集(三):采集整个网站
  14. Java动态代理原理分析
  15. 梦想太远,现实太近 3
  16. 数据仓库-基础知识(维度建模)
  17. 计算机格式化后能恢复数据吗,硬盘格式化后数据还能恢复吗-数据恢复百科
  18. python 本月天数
  19. 牛!上半年跨境电商进出口增长28.6%;亚马逊日本站自动定价工具增加新功能;TikTok试点视频简历项目…|洞悉跨境
  20. 王道计算机操作系统考研复习指导知识点总结

热门文章

  1. spring-aop常用切点表达式
  2. 夫妻卖盲盒、年入16亿,揭秘泡泡玛特的暴利生意
  3. C# C++ 互操作:C++向C#输出不定长数组或指针的实现
  4. 大数据下,淘宝达人、今日特卖等自媒体人如何适应这个时代,或许该用上工具了!
  5. 友情链接php模板,自定义友情链接页面模板
  6. stm32 esp8266-01使用 get,post 请求数据以及json解析
  7. 实习日记——Day24
  8. 无需Root也能使用Xposed!
  9. windows的文件路径文件(夹)名的分割符也可以用正斜杠
  10. 佛说,是我们自己苦了自己~