Python函数参数列表过长
我在寻找给我的函数传递参数列表的最佳方法:
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
有两个选择:
可以尝试通过把逻辑拆分成多个函数来减少参数的数量。
如果第一种方法不行,可以使用字典作为一个参数,把所有的参数都放在里面。这样做比较灵活(函数的签名保持不变,即使你添加或删除参数),而且大部分情况下也容易理解(字典里的键有意义)。
3
简单来说,让这个函数返回一个字典(dict)。然后你可以用 myFunc(**yourdict)
来调用它,这样字典里的内容就会作为参数使用。如果你 return yourdict
,那么你会得到同样的字典(可能里面的值会被修改)。或者你也可以直接修改原来的字典,不用返回新的字典。