Python函数参数列表过长

1 投票
2 回答
3787 浏览
提问于 2025-04-16 23:17

我在寻找给我的函数传递参数列表的最佳方法:

def myFunc(*args):
    retVal=[]
    for arg in args:
        retVal.append(arg+1)
    return "test",retVal

问题是,当你需要传递很多参数给函数时,这就变得非常麻烦。因为你得把所有参数写两遍。如果有10个或者更多的参数,而且名字都很长,那就真的很累人。

test,alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota=myFunc(alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota)

所以我想到了这样的办法:

w=alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota
test,w=myFunc(w)

但这样我还是得做:

alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota=w

有没有更简短的方法来传递和获取函数的参数列表?或者给函数一个指针,让它直接修改这些参数?

这就是我想要的:

w=alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota
test,w=myFunc(w)

# And directly get my parameters modified to be able to print them :
print alpha,[...],iota

2 个回答

4

有两个选择:

  1. 可以尝试通过把逻辑拆分成多个函数来减少参数的数量。

  2. 如果第一种方法不行,可以使用字典作为一个参数,把所有的参数都放在里面。这样做比较灵活(函数的签名保持不变,即使你添加或删除参数),而且大部分情况下也容易理解(字典里的键有意义)。

3

简单来说,让这个函数返回一个字典(dict)。然后你可以用 myFunc(**yourdict) 来调用它,这样字典里的内容就会作为参数使用。如果你 return yourdict,那么你会得到同样的字典(可能里面的值会被修改)。或者你也可以直接修改原来的字典,不用返回新的字典。

撰写回答