首页 > Python3教程 > Python3 函数

Python3 高阶函数(Higher-order function)

高阶函数

在数学和计算机科学中,高阶函数是至少满足下列一个条件的函数:接受一个或多个函数作为输入、输出一个函数

函数作为变量

在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能引用外部函数的变量,这就是闭包。

关闭
感谢您的支持,我会继续努力!
扫码打赏,建议金额1-10元


提醒:打赏金额将直接进入对方账号,无法退款,请您谨慎操作。