我可以获取局部变量的字典,以变量名作为键,值作为值。
>>>> 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
更新似乎有些奇怪。似乎它应该是设置时存在的变量的静态字典。
答案 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 属性