Python:将变量名作为参数传递

Hol*_*onk 2 python

我有一个函数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 语句感觉有点多余。

Hyp*_*ino 5

用一个 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但不建议这样做,因为如果参数是您不想更改的其他变量的名称,则可能会导致不必要的问题。