这个问题已经被问了很多次,我尝试了每一个解决方案,但是都没有成功。我想使用以下两行代码打印出每个变量及其值。
for name, value in globals():
print(name, value)
这会产生一个错误:
Too many values to unpack
当我运行时:for name in globals():
print(name)
我只得到变量的名称。任何帮助将不胜感激。
这个问题已经被问了很多次,我尝试了每一个解决方案,但是都没有成功。我想使用以下两行代码打印出每个变量及其值。
for name, value in globals():
print(name, value)
Too many values to unpack
当我运行时:for name in globals():
print(name)
我只得到变量的名称。任何帮助将不胜感激。
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 PietersAttributeError: 'dict'对象没有'deepcopy'属性
- Joshua Stafford