在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
相关产品推荐
相关产品推荐

