我可以得到局部变量的字典,变量的名称作为键,值作为值。
>>>> 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 属性