具有多个参数的功能

时间:2018-12-31 21:56:37

标签: python function args kwargs

似乎应该对此有一个简单的答案,但我没有找到它。我有一组方程,其中包含两个或三个感兴趣的变量(例如x,y和z)以及一整套参数(a,b,c,... z),这些参数用于校准等式代表。我可以用“ def func(变量,参数):返回内容”的形式写下函数,并用它们做我想做的事情,这就是说,对于给定的参数选择,给定y和z的x。我还需要能够随着模型校准的更改而更改参数,还需要测试模型输出在一系列参数范围内的变化。另一则信息是,我需要使用诸如fsolve之类的东西来查找方程相交的位置来求解模型。

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

1 个答案:

答案 0 :(得分:1)

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

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参数的属性来访问,从而使调用更加清晰。