打印所有变量及其值

7

这个问题已经被问了很多次,我尝试了每一个解决方案,但是都没有成功。我想使用以下两行代码打印出每个变量及其值。

for name, value in globals():
    print(name, value)

这会产生一个错误:Too many values to unpack当我运行时:
for name in globals():
    print(name)

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


你能举个它打印输出内容的例子吗? - user8162574
1个回答

12

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)
>>> 

这在数据结构文档中有详细解释,可以在这里查看!

Python 3版本:

for name, value in globals().copy().items():
    print(name, value)

如果我们不复制全局函数的输出,那么就会出现RuntimeError错误。

此外,如果某个变量的输出包含列表和字典,则应使用deepcopy()而不是copy()。

for name, value in globals().deepcopy().items():
    print(name, value)

或者您可以使用 list(globals().items()) 来进行复制,或者通过生成器表达式避免添加新的全局名称:print(*(f"{n} {v}" for n, v in globals().items()), sep="\n") - Martijn Pieters
如果您的全局空间中有一个字典,则似乎无法正常工作。 AttributeError: 'dict'对象没有'deepcopy'属性 - Joshua Stafford

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