打印没有值的局部变量名称

时间:2019-07-25 07:58:03

标签: python

我可以获取局部变量的字典,以变量名作为键,值作为值。

>>>> 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()会导致相同的问题,因为我仍然需要创建一个循环。

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

3 个答案:

答案 0 :(得分:2)

如果只需要变量名,请尝试以下操作:

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

在上面的代码中,local_vars不会更新,因为它是locals()dict的副本,而不是直接引用。

答案 1 :(得分:2)

您可以尝试遍历“原始”副本:

# To get the names
for name in locals().copy().keys():
  print(name)


#To get the values:
for value in locals().copy().values():
  print(value)

答案 2 :(得分:1)

locals()-更新并返回代表当前本地符号表的字典。注意此字典的内容不应修改(for key in locals()

您可以使用vars(),当通过参数调用时,该函数为模块,类,实例或具有 dict 属性的任何其他对象返回 dict 属性