首页 > 解决方案 > 打印没有值的局部变量的名称

问题描述

我可以得到一个局部变量的字典,变量名作为键,值作为值。

>>>> local_vars = locals()
>>>> len(local_vars)
34

如果我只是打印local_vars它没有帮助,因为某些变量太长了。

我只想打印变量名。但是遇到一个有趣的问题

>>>> for key in local_vars: print(key)
__name__
Traceback (most recent call last):
File "<stdin>", line 1, in <module> RuntimeError: dictionary changed size during iteration

我相信使用 dict.items() 会导致同样的问题,因为我仍然需要创建一个循环。

local_vars当 for 循环开始时更新似乎很奇怪。似乎它应该是设置时存在的变量的静态字典。

标签: python

解决方案


如果您只想要变量名称,可以尝试以下操作:

a=1
b=2
c=3
d=4
local_vars = dict(locals())
for variable in local_vars.keys():
    print(variable)

在上面的代码中,local_vars 没有得到更新,因为它是 locals() 字典的副本,而不是直接引用。


推荐阅读