You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Python 3交互模式下如何仅打印自定义变量?

如何在Python交互模式下仅查看自定义变量

嘿,这个问题我太熟悉了!每次在Python交互环境里用dir(),那些自带的__xxx__特殊变量总是占满输出,想要快速找到自己定义的变量确实有点麻烦。这里有几个实用的办法帮你过滤掉它们:

方法1:过滤双下划线开头的变量

Python的内置特殊变量几乎都是以双下划线__开头和结尾的,所以我们可以直接用列表推导式筛选掉这类名字:

[x for x in dir() if not x.startswith('__')]

这个表达式会遍历dir()返回的所有命名,只保留那些不是以双下划线开头的项,完美排除所有内置特殊变量,剩下的就是你自己定义的变量、导入的模块或者函数之类的。

方法2:对比初始命名空间(更精准)

如果连导入的模块也想排除,或者想严格只看你之后新增的命名,可以在刚进入交互模式时先记录初始的变量列表,之后再对比:

# 刚打开Python交互器时先执行这行,保存初始命名空间
initial_names = set(dir())

# 接下来定义你的变量/导入模块,比如:
my_var = "hello"
count = 42
import os

# 查看自己新增的命名时运行:
[x for x in dir() if x not in initial_names]

这样得到的结果就是你在记录初始列表之后所有新增的命名,精准度更高。

方法3:直接遍历全局命名空间字典

用globals()函数可以直接获取当前全局命名空间的字典,我们只需要筛选字典的键即可:

[k for k in globals() if not k.startswith('__')]

这个方法和第一种本质上是一样的,只是直接从全局字典中取值,效果相同。

需要注意的是,如果你在交互模式下定义了函数或者类,这些也会被包含在结果里——毕竟它们也是你自定义的命名嘛!

内容的提问来源于stack exchange,提问作者ccsann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:04:29