再见Print,用这个更香!

python的标准库概览 标准库 阅读详情

点击上方“菜鸟学Python”,选“星标”公众号

重磅干货,第一时间送达

小编学习使用Python已经有5-6年啦,使用 Python 开发过程中,总是避免不了 Debug。小伙伴们,你们都怎样 Debug Python 代码,是不是常用 print 大法?

在本文介绍的这个项目中,Debug Python 代码再也不需要 print 了。只要给有疑问的代码加上装饰器,各种信息一目了然,找出错误也就非常简单了。

这个名为 PySnooper 的项目在 GitHub 上已经收获了13.9K+ 的 Star 量 。它类似于有断点和监视功能的调试器。

01

如何安装

安装 PySnooper 的最佳方法是使用 pip:

pip install pysnooper

02

简单案例介绍

该工具使用采用装饰器的形式,将函数的运行过程以日志的形式进行输出,其记录了运行了哪些代码行,运行的时间及运行到当前代码时各变量的值。

代码运行详细信息如下:

可以看到 PySnooper 把整个函数运行的过程都记录了下来,包括:

1).代码文件所在路径、代码行号等信息,以及每一行代码调用时间信息

2).函数内局部变量 gzh_dict 的值

3).函数的 return 返回值

4).函数运行的整个时间

如果不想跟踪整个函数,则可以将相关部分包装在 with 块中:

代码运行情况如下:

03

5大进阶功能

1).将输出重定向到文件

@pysnooper.snoop()  不传参数时,会将调试的信息输出到标准输出。对于单次调试就能解决的 BUG ,这样没有什么问题,但是有一些 BUG 只有在特定的场景下才会出现,需要你把程序放在后面跑个一段时间才能复现。这种情况下,你可以将调试信息重定向输出到某一日志文件中,方便追溯排查。


2).跟踪全局变量

PySnooper 默认是只跟踪函数体内的局部变量,若需要跟踪全局变量需要给 pysnooper.snoop() 加上参数 watch.

从上可知,如果全局变量 gzh_info 的值有变化时,就会被打印出来。pysnooper.snoop() 还可以接收另外一个参数 watch_explode,和 watch 参数相反,它表示除了这几个参数外的其他所有全局变量都监控。

@pysnooper.snoop(watch_explode="gzh_info")
3).设置调试日志的前缀

当使用 PySnooper 跟踪多个函数时,日志输出会显得很乱,不方便查找文件。对于这种情况,PySnooper 提供了一个参数,方便为不同的函数设置不同的标识,方便在查看日志时进行区分日志属于哪个函数。

4).支持多线程调试模式

PySnooper 同样支持多线程的调试,通过设置参数 thread_info=True ,它就会在日志中打印出函数中对应的线程信息。

5).获得程序执行时间

如果希望输出的时间是相对于程序开始运行的时间,使用relative_time = True 即可。

6).不显示和环境相关的信息

如果只想看代码相关的输出信息,设置 normalize= True 就会删除所有与机器相关的数据(路径,时间戳,内存地址),只显示变量信息:

相对于其他 DEBUG 工具,例如 Pycharm 本地打断点调试,在本地用 IDE 的图形化界面调试无疑是最适合的,但是如果需要调试服务器的Python脚本,并且服务器只能通过堡垒机进行登陆访问, Pycharm 的远程调试就不好用了,PySnooper 的优势就体现出来了。

感兴趣的小伙伴赶紧去试试 PySnooper 吧。

万水千山总是情,点个  ????  行不行。

程序员GitHub,现已正式上线!

接下来我们将会在该公众号上,专注为大家分享GitHub上有趣的开源库包括Python,Java,Go,前端开发等优质的学习资源和技术,分享一些程序员圈的新鲜趣事。

推荐阅读:这个GitHub 1400星的Git魔法书火了,斯坦福校友出品丨有中文版贼 TM 好用的 Java 工具类库
超全Python IDE武器库大总结,优缺点一目了然!
秋招来袭!GitHub28.5颗星!这个汇聚阿里,腾讯,百度,美团,头条的面试题库必须安利!
收获10400颗星!这个Python库有点黑科技,竟然可以伪造很多'假'的数据!
牛掰了!这个Python库有点逆天了,竟然能把图片,视频无损清晰放大!


点这里,获取一大波福利
Matlab vs Python:智能家电模糊控制,用哪个实现更香 本文对比了Matlab和Python在智能家电模糊控制中的应用,重点分析了开发效率、系统性能、部署灵活性、可视化支持和社区资源。Matlab的Fuzzy Logic Toolbox适合快速原型开发,而Python的scikit-fuzzy库则提供更灵活的部署方案,适合工业级应用。文章通过洗衣机模糊控制案例,详细比较了两者在模糊推理、计算精度和全流程开发中的优劣。 阅读详情

相关推荐

基于SparkFun u-blox MAX-M10S的低功耗GNSS定位模块实战指南

全球导航卫星系统(GNSS)通过接收多颗卫星信号,为设备提供精准的时空基准。其核心原理是测量信号传播时间差进行三角定位,技术价值在于为物联网、可穿戴设备等微型化、电池供电场景提供了关键的室外定位能力。在宠物追踪、资产管理和户外数据采集等应用场景中,对模块的功耗、体积和可靠性提出了严苛要求。本文聚焦于SparkFun u-blox MAX-M10S这款超低功耗GNSS接收模块,详细解析其硬件设计、Qwiic即插即用接口、多星系支持(如GPS、北斗)等特性,并提供了从硬件连接到软件配置、再到数据解析与低功耗优化

weixin_34389926的博客 421

Python】基础:标准库常用模块示例

Python】基础:标准库常用模块示例

DevFrank的博客 1786

Pythonpython标准库介绍、详解PyCharm

Python标准库(Python Standard Library)是Python语言自带的一组常用模块和工具库,它包含了众多现成的模块,可以方便地开发各种应用程序。Python标准库可以分为以下几个类别:操作系统服务:os、sys、io、shutil等模块,提供了与操作系统交互的工具和功能。数据类型处理:math、random、datetime、calendar、time等模块,提供数值计算、随机数生成、日期时间处理等功能。

Fanjufei的博客 3083

python基础(12) — 文件操作

3. 读取文件内容:可以使用文件对象的`read()`方法来读取整个文件的内容;1. 文件打开和关闭:使用`open()`函数可以打开一个文件,并返回一个文件对象,然后通过文件对象进行读取或写入操作。可以使用`seek()`方法来调整指针的位置,使用`tell()`方法来获取当前指针的位置。4. 写入文件内容:打开文件时,若指定模式为写入模式(`'w'`、`'a'`等),可以使用文件对象的`write()`方法向文件写入内容。- `'x'`:创建模式(创建新文件,如果文件已存在则报错)

个人博客 1528

200个Python标准库汇总!

string:通用字符串操作re:正则表达式操作difflib:差异计算工具textwrap:文本填充unicodedata:Unicode字符数据库stringprep:互联网字符串准备工具readline:GNU按行读取接口rlcompleter:GNU按行读取的实现函数struct:将字节解析为打包的二进制数据codecs:注册表与基类的编解码器。

Trb601012的博客 978

好用到爆的打印设计神器!vue-print-designer 集成指南

本文详细介绍了如何将 vue-print-designer 打印设计器集成到 Vue 项目中,从环境准备到核心功能实现。主要内容包括:安装依赖、全局注册组件、创建打印设计器页面、处理模板数据、实现预览和导出 PDF 功能。还提供了进阶用法,如对接后端接口、添加自定义元素和优化预览效果。通过简单的配置即可实现自定义打印模板设计、预览和导出,解决打印格式适配问题。项目地址:https://gitee.com/theGreatOldFive/vue-print-designer

uyuii_的博客 2368

【新手python程序员必须明白的真相】10.新手Python程序员必须明白的Python版本坑:2.x,3.x早分清,项目不报错!

版本差异就像编程路上的减速带,跨过去就是康庄大道。新项目一律用Python3(官方已停止Python2支持)维护老代码时先确认版本再动手使用__future__模块可以缓解移植痛苦编程江湖险恶,但装备好版本意识这个金钟罩,你就能少掉80%的头发!保持对技术细节的敬畏,持续学习新特性,终有一天你会笑着看这些"坑"变成垫脚石。代码虐你千百遍,你待代码如初恋——这才是程序员的浪漫啊!

1055

信息学奥赛OpenJudge同款题:用Python三行代码实现“过滤多余空格”,对比C++哪种更香

本文对比了Python和C++在信息学奥赛OpenJudge题目“过滤多余空格”中的实现方式,展示了Python三行代码的简洁高效与C++的精细控制。通过分析两种语言的字符串处理哲学,帮助开发者理解不同场景下的最佳选择,提升编程思维和实战能力。

weixin_30878501的博客 336

老iMac焕新颜:实测爱国者U396固态U盘装macOS Sonoma,比拆机换SSD更香

本文详细介绍了如何通过爱国者U396固态U盘为2015款iMac 5K安装macOS Sonoma系统,实现性能大幅提升。相比拆机更换SSD或使用雷电2外置存储,固态U盘方案成本更低、安装更简单,实测读写速度可达420MB/s,是原机械硬盘的4倍。文章包含完整安装步骤、性能测试数据及长期使用优化建议,为老iMac用户提供安全高效的升级方案。

weixin_30471561的博客 408

spring cloud config 配置中心

将配置中心作为一个单独的微服务, 来和github联系, 读取其配置。为其它服务提供配置。

while(True): print('adorable') 303

Linux/C++开发者技术栈与实战指南

Linux和C++作为系统级开发的基石,其技术栈的掌握对于开发者至关重要。Linux提供了强大的命令行工具和系统管理能力,而C++则以其高性能和灵活性著称。理解Linux文件系统、进程管理和网络编程等核心概念,结合C++的面向对象、模板和RAII等特性,可以构建高效稳定的应用程序。在现代开发中,工具链如GCC、GDB和STL的使用技巧,以及多线程和网络编程的实践,都是提升开发效率的关键。本文通过实战案例,分享了Linux环境下C++开发的必备技能和避坑指南,帮助开发者快速上手并深入理解系统编程的精髓。

weixin_30631587的博客 275

Python原生交互式调试:用code.interact()实时掌控运行时上下文

交互式调试是Python开发中深入理解程序状态的核心能力,其本质是在代码执行现场启动一个共享当前作用域的完整Python REPL环境。不同于pdb断点调试的指令式受限交互,code.interact()基于locals()和globals()动态捕获真实内存中的活变量,支持函数定义、模块导入、对象修改等原生操作,技术价值在于实现‘所见即所得’的即时验证与现场修复。典型应用场景包括API响应结构探查、异常上下文还原、配置文件加载验证及新手对象行为实操教学。本文聚焦Python标准库原生方案,不依赖IPyth

weixin_30847865的博客 503

Python】系列模块之标准库OS详解

Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境。简单来说,包就是文件夹,但该文件夹下必须存在 __init__.py 文件, 该文件的内容可以为空。模块提供了非常丰富的方法用来处理文件和目录。可以直接调用linux里的命令。

康师傅没有眼泪 2109

Python中内建模块和标准库的工作原理? - 易智编译EaseEditing

Python中的内建模块和标准库是Python编程语言的一部分,它们提供了大量的功能和工具,可用于各种任务和应用程序。这些模块和库通常是由Python官方维护的,因此在任何标准Python安装中都是可用的。

EEditing的博客 268

Python基础之开发必备-标准库(内置模块)汇总详细介绍(持续更新……)

Python标准库是Python编程语言的一部分,包含了大量的模块和函数,用于实现各种常见的编程任务。Python标准库是Python编程中不可或缺的一部分,它提供了丰富的功能和工具,使得Python编程更加方便和高效。在本文中,我们将详细介绍Python标准库的各个模块和函数。Python的标准库比较多,此处选一些日常开发中常用到的有用的标准库做简要介绍,后面文章中将分别逐一介绍标准库的特性、作用以及使用方法。

SteveRocket's-Blog 2202

Python基础——类6(模块、包、标准库)

模块化指将一个完整的程序分解为一个一个小的模块,通过将模块组合,来搭建出一个完整的程序在Python中一个py文件就是一个模块,要想创建模块,实际上就是创建一个python文件在一个模块中引入外部模块可以引入同一个模块多次,但是模块的实例只会创建一个import可以在程序的任意位置调用,但是一般情况下,import语句都会统一写在程序的开头在每一个模块内部都有一个__name__属性,通过这个属性可以获取到模块的名字。

qq_51872445的博客 1662

Python 常用标准库模块 1

003. Python 常用标准库模块

Andy 1165

python标准库有哪些模块,简单总结下。

Python标准库功能强大,涵盖系统交互(os, sys)、数据结构(collections)、日期时间(datetime)、数学计算(math, random)、数据持久化(json, pickle)、并发编程(threading)、网络通信(socket)等核心功能,还提供logging、unittest等开发工具。这些"自带电池"的模块无需安装即可使用,是Python编程的重要基础。完整列表可参考官方文档。

yuanpan的专栏 1164
上一篇: 超燃的文字云效果,用Python就能轻松get!
下一篇: 爱了爱了!0.052 秒打开 100GB 数据,这个Python开源库火爆了!
菜鸟学Python
博客等级 码龄9年 7561粉丝 571原创
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值