将函数集成到除第一个之外的变量上,寻找lambda的替代方法

时间:2013-02-15 09:28:57

标签: python lambda quad

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

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

import functools
quad(functools.partial(sqrfn, 2), 0, 10)