打印不带值的局部变量的名称

  • 本文关键字:局部变量 打印 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更新似乎很奇怪。似乎它应该是设置时存在的变量的静态字典。

如果你只想要变量名,也许可以尝试以下方法:

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

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

您可以尝试迭代"原始"的副本:

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

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

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

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

最新更新