我有一个函数f(x),其中创建了许多局部变量。x是与这些局部变量之一同名的字符串,我想通过更改x. 什么是干净的方法来做到这一点?目前我使用了很多if/elif语句。
一些虚拟代码来代表我的问题:
def f(x):
a = [1,2,3]
b = [2,3,4]
c = [3,4,5]
if x == "a":
a[0] = 10
elif x == "b":
b[0] = 10
elif x == "c":
c[0] = 10
return a,b,c
Run Code Online (Sandbox Code Playgroud)
我想要正确的变量来改变值,但使用所有这些 if/elif 语句感觉有点多余。
dict简单地说,使用字典:
def f(x):
values = {
"a": [1,2,3],
"b": [2,3,4],
"c": [3,4,5]
}
values[x][0] = 10
return values["a"], values["b"], values["c"]
Run Code Online (Sandbox Code Playgroud)
如果您真的想要,请使用您的原始代码并执行,locals()[x][0] = 10但不建议这样做,因为如果参数是您不想更改的其他变量的名称,则可能会导致不必要的问题。