除了使用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,)),但这不是重点)。

最佳答案

您可以为此使用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)

08-24 21:07