PySnooper 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
PySnooper 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
PySnooper 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
PySnooper 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
PySnooper 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 MIT
开发语言 Python 查看源码 »
操作系统 跨平台
软件类型 开源软件
开源组织
地区 不详
投 递 者 局长
适用人群 未知
收录时间 2019-04-24

软件简介

PySnooper 在 GitHub 上自嘲是一个“乞丐版”调试工具(poor man's debugger)。

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

但上面的方法都比较麻烦,例如使用调试器需要进行繁琐的设置,使用 print 打印也要很仔细。与它们相比,使用 PySnooper 只需为要调试的函数添加一个装饰器即可,这样就能获得运行函数详细的 log,包括执行的代码行和执行时间,以及局部变量发生变化的确切时间。

之所以称为“乞丐版”,相信是因为 PySnooper 使用起来十分简单,开发者可以在任何庞大的代码库中使用它,而无需进行任何设置。只需添加装饰器,并为日志输出地址指定路径。

示例

下面的代码写了一个函数将传入的值转换为二进制码,并返回一个二进制列表。要使用 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
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

安装

使用 pip 进行安装

pip install pysnooper
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (6)

加载中
就项目开发而言,这东西实际用途不大,都是想象中的需求 用于教学演示还差不多
02/03 10:36
回复
举报
flask.views下一直报错
2019/07/22 15:56
回复
举报
👍, 很好
2019/04/25 10:15
回复
举报
看着还不错哎。
2019/04/25 09:53
回复
举报
挺好的。某些时候可以不用IDE来做
2019/04/25 09:20
回复
举报
很好
2019/04/25 08:57
回复
举报
更多评论
暂无内容
发表了博客
2019/04/24 09:23

PySnooper

GitHub上刚开源的一个项目,用来寻找 python 代码中的错误。由于平时写的代码行数量少,个人不太喜欢用那种庞大(不轻量)的调试工具,像 pycharm 之类的。以前习惯于用 print 函数打印变量查看状态来找错误。如今这个工具完美适用于我这样的人。个人认为,这个工具非常适合持续服务或者大数据集任务。 这个工具使用起来很简单,首先直接可以使用 pip 安装 pip install pysnooper 使用时,只需要在每个函数前面添加装饰器即可,...

0
0
发表了博客
2019/04/25 17:48

初试PySnooper

Pysooper是什么? 我们写代码会经常出现bug,有的人会使用断点调试器,但是设置这样的断点调试器是花时间的。 所以很多人会在可能出现错误的地方print打印来输出语句。 Pysooper的作用有点类似,你不必小心谨慎的使用print语句,只需要在想要调试的函数中引入一个装饰器。就可以得到函数的详细日志,包括运行了那些行,何时运行,以及何时更改了局部变量。 使用示例 写一个函数,将数字转换为二进制 import pysnooper @pysno...

0
0
发表了博客
2020/11/30 08:00

PySnooper | Python调试神器

后台回复1024,解锁无限快乐! 传统的Python调试方式 1、打断点 2、Print函数 3、raise for ... 什么是PySnooper 一般情况下,想要知道哪一行代码在运行、哪一行不运行、本地变量的值是多少时,大部分人会使用print函数,在关键部分打印某个或某组变量的值、形状、类型等信息。 而PySnooper让你能快速地获得这些信息,且相比之下它不需要细致地写print函数,只需要向感兴趣的函数增加一个装饰器就行了。我们会得到该函数的详细l...

0
0
2020/07/12 22:47

Python实用模块之pysnooper

软硬件环境 windows 10 64bit anaconda3 with python 3.7.4 pysnooper pysnooper简介 PySnooper是一个用于代码调试的一个第三方库,源码地址是 https://github.com/cool-RR/PySnooper,项目简介中只有一句话,Never use print for debugging again。相信很多人,特别是新手都是用print来进行代码调试的,那这个项目就能让你摆脱print语句,让你的代码调试更加高效。 安装 我们还是使用pip安装 pip install pysnooper 代码实践 ...

0
0
发表了博客
2019/04/25 17:22

Python模块之pysnooper

一、简介 调试程序时,很多人喜欢直接用print来代替断点调试,而pysnooper模块比print更方便,以装饰器的形式存在 二、实验环境   操作系统:win10   python版本:python3.6 三、安装pysnooper模块   pip3 install pysnooper 四、简单实例   需求:屏幕打印每个变量的值 import pysnooper @pysnooper.snoop() def test(): a = 100*1 sum=0 for i in range(10): sum +=i sum2 = sum +a...

0
0
发表了博客
2019/04/23 18:22

极简Python DeBug工具——PySnooper

DeBug Python 代码的方式有很多种?比如: (1)设置断点 (2)print函数 (3)。。。 本文要介绍的是一个新开源的项目PySnooper ,只要给有疑问的代码加上装饰器,各种信息一目了然,找出错误也就非常简单。 项目地址:https://github.com/cool-RR/pysnooper 极简DeBug工具PySnooper 一般情况下,想要知道哪一行代码在运行、哪一行不运行、本地变量的值是多少时,大部分人会使用 print 函数,在关键部分打印某个或某组变量的值...

0
0
发表了博客
2019/05/11 12:24

代替print输出的PY调试库:PySnooper

PySnooper¶ Github:https://github.com/lotapp/PySnooper pip install pysnooper 使用:分析整个代码 @pysnooper.snoop() def avg(args): return sum(args) / len(args) PS:调试代码片段 with pysnooper.snoop(): code In [1]: import functools import pysnooper # 分析整个代码 @pysnooper.snoop() def sum(args): return functools.reduce(lambda x, y: x + y, args) def avg(args): ...

0
0
发表了博客
2019/11/28 00:10

python--debug神器pysnooper

使用它你可以获得什么优势: (1)无需用print就可以获得变量的值; (2)以日志地形式进行保存,方便随时查看; (3)可以根据需要,设置调用函数的深度; (4)多个函数的日志,可以设置前缀进行标识; 1.安装 pip install pysnooper 2.官方代码 import pysnooper @pysnooper.snoop() def number_to_bits(number): if number: bits = [] while number: number, remainder = divmod(number, ...

0
0
2019/10/22 18:00

一个牛逼的 Python 调试工具PySnooper

PySnooper 使用起来十分简单,开发者可以在任何庞大的代码库中使用它,而无需进行任何设置。你只需添加装饰器,并为日志输出地址指定路径,方法是将其路径指定为第一个参数。 目前,PySnooper在GitHub上已经获得7047个Star,371个Fork(GitHub地址:https://github.com/cool-RR/PySnooper) 示例 以下编写了一个函数,通过返回一个二进制列表。我们只需要通过添加@pysnooper.snoop()装饰器就可以了: import pysnooper @pysnoo...

0
0
发表了博客
2019/05/03 18:20

一个牛逼的 Python 调试工具PySnooper

原文转自:https://mp.weixin.qq.com/s/OtLr-cNethboMgmCcUx2pA PySnooper 使用起来十分简单,开发者可以在任何庞大的代码库中使用它,而无需进行任何设置。你只需添加装饰器,并为日志输出地址指定路径,方法是将其路径指定为第一个参数。 目前,PySnooper在GitHub上已经获得7047个Star,371个Fork(GitHub地址:https://github.com/cool-RR/PySnooper) 示例 以下编写了一个函数,通过返回一个二进制列表。我们只需要通过添加...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
6 评论
99 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部