2

除了使用 lambda 函数将 python 2.7 中的函数集成到两个变量中的第二个之外,还有其他方法吗?例如,我想在 x 上集成这个示例函数:

import numpy as np
from scipy.integrate import quad

def sqrfn(a,x):
    return a*np.square(x)

这很容易通过以下方式实现:

quad(lambda x: sqrfn(2,x),0,10)

我想知道是否有另一种方法可以做到这一点,例如使用类似的东西,我认为这更直观:

quad(sqrfn,0,10,args(a=2))

有人有替代解决方案吗?(是的,我可以将函数定义为sqrfn(x,a)quad(sqrfn,0,10,args(2,))改为使用,但这不是重点)。

4

2 回答 2

1

你可以用functools.partial()这个:

In [10]: f = functools.partial(sqrfn, 2)

f(x)相当于sqrfn(2, x)

In [11]: map(f, range(5))
Out[11]: [0, 2, 8, 18, 32]

您的示例将变为:

quad(functools.partial(sqrfn, 2), 0, 10)
于 2013-02-15T09:46:44.450 回答
0
import functools
quad(functools.partial(sqrfn, 2), 0, 10)
于 2013-02-15T09:48:31.593 回答