Python3 高阶函数(Higher-order function)
2017-08-10 22:26:51
•
阅读
打赏
高阶函数
在数学和计算机科学中,高阶函数是至少满足下列一个条件的函数:接受一个或多个函数作为输入、输出一个函数
函数作为变量
在Python中,对象和方法都是变量。
函数名其实就是指向函数的变量。
函数本身也能赋值给变量,即:变量指向函数。
如果一个变量指向了一个函数,那么,就能通过该变量来调用这个函数
def print_hello(name):
print('Hello, %s' % name)
ph = print_hello # 将函数变量赋值给ph变量
ph('python') # 打印结果是: Hello, python
print_hello = 3 # 给函数变量赋值
print_hello('python') # TypeError: 'int' object is not callable
函数作为参数
变量能指向函数,函数的参数能接收变量,那么一个函数就能接收另一个函数作为参数,这种函数就称之为高阶函数。
编写高阶函数,就是让函数的参数能够接收别的函数。
def get(a):
return a*10
def printAll(x,y,z):
print(z(x) + z(y)) #z表示一个函数参数
printAll(3,3,get) #输出60
函数作为返回值
高阶函数除了能接受函数作为参数外,还能把函数作为结果值返回。
def return_nu(*args):
def all():
a = 1
for n in args:
a = a * n
return a
return all #函数返回值为一个函数all
nu = return_nu(3,6,2)
print(nu()) #输出36
调用return_nu函数时,没有计算乘积,而是返回了一个计算乘积的函数。调用这个返回的函数,才会计算乘积。
闭包
如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure)。
在上面的return_nu函数中,内部函数all能引用外部函数的变量,这就是闭包。
相关推荐
深度学习 -- 损失函数
深度残差网络(Deep Residual Networks (ResNets))
深度学习 -- 激活函数
神经网络训练 -- 调整学习速率
生成对抗网络(GAN)改进与发展
生成对抗网络(GAN)优点与缺点
生成对抗网络(GAN)的训练
生成对抗网络(GAN)基本原理
生成模型与判别模型