Python 多参数函数

Python 多参数函数,python,function,args,keyword-argument,Python,Function,Args,Keyword Argument,似乎应该有一个简单的答案,但我找不到。我有一组方程,其中包含两个或三个感兴趣的变量(比如,x,y和z)和一整套参数(a,b,c,…z),用于校准方程所代表的模型。我可以用“def func(变量,参数):return stuff”的形式写下函数,然后用它们做我想做的事情,也就是为给定的参数选择解x给定的y和z。我还需要能够随着模型校准的改变而改变参数,并测试模型输出在一系列参数上的变化。另一个信息是,我需要使用类似于fsolve的东西来找到方程相交的地方,从而求解模型 这很好,但无法读取,因为每

似乎应该有一个简单的答案,但我找不到。我有一组方程,其中包含两个或三个感兴趣的变量(比如,x,y和z)和一整套参数(a,b,c,…z),用于校准方程所代表的模型。我可以用“def func(变量,参数):return stuff”的形式写下函数,然后用它们做我想做的事情,也就是为给定的参数选择解x给定的y和z。我还需要能够随着模型校准的改变而改变参数,并测试模型输出在一系列参数上的变化。另一个信息是,我需要使用类似于fsolve的东西来找到方程相交的地方,从而求解模型


这很好,但无法读取,因为每个函数都有一个超长的输入列表。我希望代码能够被其他人理解。有没有办法让函数读取一系列参数,使函数的形式为func(x,y,z,params)

简化调用的一个简单方法是使用简单对象并在其上设置属性

class Params:
    pass

p = Params()
p.a = 'some value'
    ...
p.q = 'some other value'
然后,您可以使用

def myfunc(x, y, z, params):
    ....
    something = x+y+z+params.q
您可以像这样调用函数

result = myfunc(1.2, 3.4, 5.6, p)

这将允许您访问单个参数作为
params
参数的属性,使调用更清晰。

这是一个相当广泛的问题。但是是的,
参数
可以预期接收各种容器。一个
dict
namedtuple
list
,等等,如果我把params设为一个列表,并在函数中通过它们的索引调用它们(params[0],等等),这些函数就会起作用。但这也是不可读的。我希望能够在模型中使用变量名(即,第一个参数是alpha,第二个参数是beta,等等,公式使用alpha和beta)。简单的方法?你读过*args和**kwargs吗?然后使用
namedtuple
,甚至只解压缩列表,或者使用名称作为属性的参数对象(响应Liam)。我可能还没有完全理解它是如何工作的,但是调用这个函数似乎效果不错。也就是说,如果我将我的函数定义为def myfunc(x,y,z,a,b,…z),那么使用*和**调用它会非常好。但是(这实际上只是我上面问题的简短版本),我如何使用*an**来定义它,以便在表达式中引用a,b。z?肯定管用。我希望有更简单的东西,但那就行了。Thx.您可以用替换简单类,允许您在创建
Params
object.Nice的同时设置属性值。谢谢我以前没见过邦奇。