列出用户定义的变量python

Mik*_*ike 4 python variables

我试图迭代python脚本中设置的变量.我遇到了以下情况:

枚举或列出[您最喜欢的语言]程序中的所有变量

在第一个例子中:

#!/us/bin/python                                                                                    

foo1 = "Hello world"
foo2 = "bar"
foo3 = {"1":"a", "2":"b"}
foo4 = "1+1"

for name in dir():
    myvalue = eval(name)
    print name, "is", type(name), "and is equal to ", myvalue
Run Code Online (Sandbox Code Playgroud)

它列出了存储在内存中的所有变量.我想隔离我在脚本中创建的变量,而不是列出默认创建的系统变量.有没有办法做到这一点?

jte*_*ace 8

默认情况下,您可以通过检查它们是否在内置__builtins__模块中来删除模块中包含的变量,如下所示:

>>> x = 3
>>> set(dir()) - set(dir(__builtins__))
set(['__builtins__', 'x'])
Run Code Online (Sandbox Code Playgroud)

唯一没有剥离的是__builtins__它本身,这很容易特殊情况.

另请注意,如果您重新定义了任何内置名称,这将不起作用.你不应该在实践中这样做,但很多人都这样做,很多是偶然的.


Nie*_*ein 7

如果你没有在你的变量前放置任何下划线,你可以这样做:

#!/us/bin/python                                                                                    

foo1 = "Hello world"
foo2 = "bar"
foo3 = {"1":"a", "2":"b"}
foo4 = "1+1"

for name in dir():
    if not name.startswith('__'):
        myvalue = eval(name)
        print name, "is", type(myvalue), "and is equal to ", myvalue
Run Code Online (Sandbox Code Playgroud)