如何在Python中列出我定义的所有变量,不包括导入的变量?

4
我知道有一些列出所有变量的方法,比如locals()、globals()、dir()。但它们也会列出从其他模块导入的变量,并生成一个非常长的列表,难以找到我自己定义的变量。那么我应该如何列出我自己定义的所有变量,并最好附带它们的值?
以下是一个示例:
import numpy
a=1
b=2
dir()

那么结果就是:

['In',
 'Out',
 '_',
 '_1',
 '_2',
 '_3',
 '_4',
 '__',
 '___',
 '__builtin__',
 '__builtins__',
 '__doc__',
 '__name__',
 '__package__',
 '_dh',
 '_i',
 '_i1',
 '_i2',
 '_i3',
 '_i4',
 '_i5',
 '_ih',
 '_ii',
 '_iii',
 '_oh',
 '_sh',
 'a',
 'b',
 'exit',
 'get_ipython',
 'numpy',
 'quit']

但我只想查看在此模块中定义的变量,即a和b。我该怎么做?


4
你编写了这段代码,为什么不知道你导入了什么? - Stephen Rauch
如果你想要值,那就记录它们。如果你不愿意这样做,那为什么不使用一个精心放置断点的调试器呢? - chb
1个回答

0

在任何导入之后,在你的模块顶部保存locals()的结果。

随后出现在locals()中的任何新项目都必须由您定义。


谢谢你的回答。但是正如你在我添加的示例中所看到的,记住导入模块中的所有变量似乎不现实。也许我可以使用一个变量来记录导入后locals()的结果,但这有点麻烦。 - Jojo Zhai
my_vars = [v for v in locals() if v not in original_locals] - John Gordon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接