大多数人可能会说这是一个坏主意。我想使用字符串的内容作为变量的名称。我想完成可怕的事情:
s = 'x'
x = 1
变量名x
从哪里来(不知何故?)来自 string s
。
要回答“为什么?”,假设我有一个全局默认值x
,我想要在函数中覆盖的选项。但:
x = 0
def f(**kw):
print x
f(x=1)
打印0
不1
。如果我可以使用 kw.keys() 中的字符串重新分配x
(或任何其他全局设置的变量),那么我会很高兴。
我意识到这适用于重新x
分配f
:
x = 0
def f(x=x):
print x
f(x=1)
但是我想在我的命名空间中有很多变量的情况下这样做,我可能在某些时候想要覆盖而不重写模块中的每个函数定义。