除了使用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)
import functools
quad(functools.partial(sqrfn, 2), 0, 10)