python如何创建高阶函数?

python

你有两种选择:使用嵌套作用域,或者使用可调用对象。 例如,假设你想要定义 linear(a,b) 使其返回一个函数 f(x) 来设计 a*x+b 的值。 可以使用以下嵌套作用域:

deflinear(a,b):

defresult(x):

returna*x+b

returnresult

或使用一个可调用对象:

classlinear:

def__init__(self,a,b):

self.a,self.b=a,b

def__call__(self,x):

returnself.a*x+self.b

在两种情况下,:

taxes=linear(0.3,2)

都会给出一个可调用对象,使得 taxes(10e6)==0.3*10e6+2.

可调用对象方式的缺点是速度略慢且生成的代码略长。 但是,请注意一组可调用对象能够通过继承来共享签名:

classexponential(linear):

# __init__ inherited

def__call__(self,x):

returnself.a*(x**self.b)

对象可以封装多个方法的状态:

classcounter:

value=0

defset(self,x):

self.value=x

defup(self):

self.value=self.value+1

defdown(self):

self.value=self.value-1

count=counter()

inc,dec,reset=count.up,count.down,count.set

这里 inc(), dec()reset() 将表现为共享同一计数变量的多个函数。

以上是 python如何创建高阶函数? 的全部内容, 来源链接: utcz.com/z/520585.html

回到顶部