我试图迭代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)
它列出了存储在内存中的所有变量.我想隔离我在脚本中创建的变量,而不是列出默认创建的系统变量.有没有办法做到这一点?
默认情况下,您可以通过检查它们是否在内置__builtins__模块中来删除模块中包含的变量,如下所示:
>>> x = 3
>>> set(dir()) - set(dir(__builtins__))
set(['__builtins__', 'x'])
Run Code Online (Sandbox Code Playgroud)
唯一没有剥离的是__builtins__它本身,这很容易特殊情况.
另请注意,如果您重新定义了任何内置名称,这将不起作用.你不应该在实践中这样做,但很多人都这样做,很多是偶然的.
如果你没有在你的变量前放置任何下划线,你可以这样做:
#!/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)