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