打印所有变量及其值

ash*_*ets 4 python

这个问题已被提出了很多问题,我尝试过每一个遇到的解决方案,但都没有取得任何成功.我正在尝试使用以下两行打印出每个变量及其值.

for name, value in globals():
    print(name, value)
Run Code Online (Sandbox Code Playgroud)

这给出了一个错误:Too many values to unpack 当我运行时:

for name in globals():
    print(name)
Run Code Online (Sandbox Code Playgroud)

我只得到变量的名称.任何帮助,将不胜感激.

n1c*_*1c9 8

globals()返回一个dict- 所以,要迭代一个dict键/值对,你可以调用它的items()方法:

dog = 'cat'
>>> for name, value in globals().items():
...     print(name, value)
... 
('__builtins__', <module '__builtin__' (built-in)>)
('__name__', '__main__')
('dog', 'cat')
('__doc__', None)
('__package__', None)
>>> 
Run Code Online (Sandbox Code Playgroud)

这在数据结构的文档中进行了解释,可在此处获得!

Python 3版本:

for name, value in globals().copy().items():
    print(name, value)
Run Code Online (Sandbox Code Playgroud)

如果我们不复制输出全局函数,则会出现RuntimeError.

如果在某些变量的输出中有列表和字典,那么使用deepcopy()而不是copy()

for name, value in globals().deepcopy().items():
    print(name, value)
Run Code Online (Sandbox Code Playgroud)