wat

wat

运行时Python对象深度检查工具

WAT是一款针对Python对象的深度检查工具,专为运行时环境设计。它能够展示对象的类型、格式化值、变量、方法、父类型、签名、文档及源代码。WAT在开发者面对复杂或未知对象时尤其有用,可以快速解析对象结构,大幅提升调试效率。这个工具无需安装,可直接在Python控制台中使用,为开发过程提供即时帮助。

WATPython对象检查运行时调试代码分析Github开源项目

🙀 WAT

<div align="center"> <a href="https://github.com/igrek51/wat">GitHub</a> - <a href="https://pypi.org/project/wat-inspector">PyPI</a> - <a href="https://igrek51.github.io/wat">文档</a> </div>

深入检查Python对象。

WAT是一个强大的检查工具, 允许你在运行时深入探索和检查未知对象。

"Wat"是英语单词"what"的变体,常用于表达困惑或厌恶

如果你发现自己深陷在Python控制台中,感到迷失和困惑, 并且在想"WAT?这是什么东西?", 这时wat检查器就派上用场了。

启动Python解释器(或连接到一个解释器),对任何对象执行wat / object, 以调查其 类型格式化值变量方法父类型签名文档,甚至源代码。 或者,你可以使用wat(object)语法。

<video width="100%" controls="true" allowFullScreen="true" src="https://github.com/user-attachments/assets/022ef89a-9e35-45be-9e2f-08d2c6af9075" poster="https://raw.githubusercontent.com/igrek51/wat/master/docs/img/wat-set.png"> </video>

导入

即时加载

如果你想快速调试某些内容, 你可以在同一会话中无需安装任何东西就使用这个检查器。 通过将此代码片段粘贴到您的Python解释器中来动态加载:

import base64, zlib

代码 = 你是一位专门从事英语到中文翻译的语言学专家。 这是一个英语到中文的翻译,请为这段源文本提供中文翻译。 除了翻译外,不要提供任何解释或其他文字。 注意:翻译需要符合中文语序、流畅、通顺 需要翻译的源文本被包裹在XML标签中,如下:

当你的世界崩塌时,请记住这些话:

  1. 这只是暂时的。没有什么是永恒的,包括你现在的感受。

  2. 你比你想象的更坚强。你已经度过了许多艰难时刻,这次也不例外。

  3. 每一次失败都是一次学习的机会。试着从中汲取教训,让自己变得更好。

  4. 生活中总有起起落落。低谷之后必有高峰。保持希望,相信美好终会到来。

  5. 你并不孤单。寻求帮助并不可耻。与亲朋好友倾诉,或寻求专业人士的帮助。

  6. 关注你能控制的事情。有些事情超出了你的掌控范围,把精力集中在你能改变的事情上。

  7. 照顾好自己。确保充足的睡眠、健康的饮食和适度的运动。

  8. 保持感恩的心态。即使在最艰难的时刻,也要试着找出值得感恩的事物。

  9. 给自己一些时间。痊愈需要时间,不要对自己太苛刻。

  10. 相信自己。你比你想象的更有潜力和能力。

记住,每一个挑战都是成长的机会。保持坚强,相信自己,你终将度过难关,变得更加坚强。 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 6eOEF840p2+Ve2ff/nsL9Cu85LJfwGvPQFk' 在全局命名空间中执行经过base64解码和zlib解压缩后的代码 现在你可以使用 wat 对象。

[!警告] 在执行 Insta-Load 代码片段之前,建议验证你即将运行的内容。 你可以选择:

  • 事先验证提取的代码内容:
    print(zlib.decompress(base64.b64decode(code)).decode())
  • inspection.py 的内容粘贴到你的解释器中。 效果相同。
  • 使用 pip 安装包并查看代码。

使用 pip 安装

或者,安装 wat-inspector 包并从 wat 模块导入检查工具:

pip install wat-inspector
import wat

此包没有依赖项。

用法与修饰符

wat 对象可以通过使用除法运算符(无需括号,便于快速输入)快速检查事物。 简短语法 wat / foo 等同于 wat(foo)

你可以使用以下修饰符调用 wat.modifiers / foo

  • .short.s 隐藏属性(对象内部的变量和方法)
  • .dunder 显示双下划线属性(以 __ 开头)
  • .code 显示函数、方法或类的源代码
  • .long 显示未缩写的值和文档字符串
  • .nodocs 隐藏函数和类的文档
  • .caller 显示检查是如何以及在何处被调用的(适用于文件,不适用于 REPL)
  • .all 包含所有可用信息
  • .ret 返回被检查的对象
  • .str 返回输出字符串而不是打印它
  • .gray 禁用控制台中的彩色输出

你可以链式使用修饰符,例如 wat.long.dunder.nodocs / foo

调用 wat.localswat() 检查本地变量。 调用 wat.globals 检查全局变量。

在解释器中输入 wat 以了解更多关于这个对象本身的信息。

有几种等效的替代语法。选择最适合你的一种:

wat.short / 'foo' # 快速输入 wat.short('foo') wat('foo', short=True) # 自然的 Python 语法 'foo' | wat.short # Unix 管道风格

用例示例

确定类型

在 Python 这样的动态类型语言中,通常很难确定对象的类型。WAT Inspector 可以通过显示类型名称及其所在模块来帮助你。

>>> wat.short / (1,) 值:(1,) 类型:tuple 长度:1
>>> wat.short / {None} 值:{None} 类型:set 长度:1
>>> wat.short / user 字符串表示:admin repr 表示:<User: admin> 类型:django.contrib.auth.models.User 父类:django.contrib.auth.models.AbstractUser, django.contrib.auth.base_user.AbstractBaseUser, django.contrib.auth.models.PermissionsMixin, django.db.models.base.Model, django.db.models.utils.AltersData

现在你已经确定了实际类型,可以在代码中添加类型注解以减少进一步的混淆。

查找方法

通过列出方法及其签名和文档字符串,你可以轻松理解如何使用未知对象。

wat / ['foo']


如果你想查看完整的文档字符串,请使用 wat.long

发现函数签名

查看函数的文档字符串和签名,了解如何使用它。

wat / str.split

查找属性

列出属性及其类型,了解被检查对象内部的真实情况。

wat / re.match('(\d)_(.*)', '1_title')

探索模块

另一个用例是探索模块。你可以列出选定模块的函数、类和子模块。

import pathlib wat / pathlib

然后,你可以进一步导航,例如 wat / pathlib.fnmatch

探索双下划线属性

默认情况下,WAT Inspector 隐藏以 __ 开头的属性。使用 wat.dunder 来查看它们。

wat.dunder / {}

查看代码

查看函数的源代码,了解它的实际工作原理。

wat.code / wat.__call__

美化不可读的集合

嵌套的字典和列表会得到漂亮的格式化、缩进输出:

使用断点调试

你可以使用 Python 的 breakpoint() 关键字在程序中启动交互式调试器。连接到解释器并现场检查事物。

(Pdb) import wat # 或粘贴 Insta-Load 代码片段 (Pdb) wat / foo # 检查本地变量 ... (Pdb) c # 继续执行

查找本地变量

使用 wat.localswat.globals 分别查找本地和全局变量。

学习 Python

通过这些代码片段,你可以更好地理解 Python 内部机制。

reversed([]) == reversed([]) # False wat.s / reversed([]) # 值:<list_reverseiterator object at 0x76749d1cb400> # 类型:list_reverseiterator
wat / type('ObjectCreator', (), {}) # 值:<class '__main__.ObjectCreator'> # 类型:type # 签名:class ObjectCreator() wat / type # 值:<class 'type'> # 类型:type # 签名:class type(…) # """ # type(object) -> 对象的类型 # type(name, bases, dict, **kwds) -> 一个新的类型 # """ # # 公共属性: # def mro(self, /) # 返回一个类型的方法解析顺序。
from typing import List wat.s / List[str] # 值:typing.List[str] # 类型:typing._GenericAlias # 父类:typing._BaseGenericAlias, typing._Final # 签名:def List(*args, **kwargs) wat(str | None) # 值:str | None # 类型:types.UnionType

探索 Python 内置函数:

wat / __builtins__ wat / ...

检查 WAT 自身

wat.dunder / wat wat.code / wat.__truediv__

环境变量

  • WAT_COLOR="false" 禁用控制台中的彩色输出。
  • WAT_COLOR="true" 强制在非 tty 环境中也使用彩色输出。

参考

编辑推荐精选

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

下拉加载更多