【发布时间】:2013-02-08 01:04:00
【问题描述】:
大多数人可能会说这是个坏主意。我想使用字符串的内容作为变量的名称。我想完成可怕的事情:
s = 'x'
x = 1
变量名称x 来自字符串s(不知何故?)。
要回答“为什么?”,假设我有一个 x 的全局默认值,我想要在函数中覆盖该选项。但是:
x = 0
def f(**kw):
print x
f(x=1)
打印0 而不是1。如果我可以使用 kw.keys() 中的字符串重新分配 x(或任何其他全局设置的变量),那么我会很高兴。
我意识到这适用于在f 中重新分配x:
x = 0
def f(x=x):
print x
f(x=1)
但是我想在我的命名空间中有很多变量的情况下这样做,我可能在某些时候想要覆盖而不重写模块中的每个函数定义。
【问题讨论】:
-
为什么不保留这些“全局”状态变量的字典?
标签: python string function keyword argument-passing