python:如何使用灵活的参数顺序调用函数?

时间:2017-04-25 13:19:37

标签: python

让我们举个例子。在某些图书馆,如" scipy.integrate"调用类似" odeint"的函数(积分函数)必须表示为" odeint(func,y0,T,...)"在哪里" func"是一个函数的名称,必须使用两个参数(y,t0),y向量和t0标量预定义。

问题是如何使用" odeint"如果已定义的函数" func"用两个参数指定,但顺序相反"(t0,y)"。

祝你好运。

2 个答案:

答案 0 :(得分:2)

您可以使用lambda函数对参数进行重新排序,如下所示:

odeint(lambda p, q: func(q, p), y0, T, ...)

或者,如果所有odeint都在参数上调用func并且确实与参数直接交互,那么你可以在主调用中交换订单:

odeint(func, T, y0, ...)

答案 1 :(得分:0)

您可以按任意顺序显式调用参数:

def func(a, b, c):
    print('a = {}'.format(a))
    print('b = {}'.format(b))
    print('c = {}'.format(c))

x = 1
y = 2
z = 3

func(a = x, b = y, c = z)
func(c = z, b = y, a = x)
func(b = y, c = z, a = x)

P.S。我不是100%肯定,但请尝试odeint(func, y0 = y0, T = T, ...)

odeint(func, T = T, y0 = y0, ...)