什么是高阶函数?
一个函数可以作为参数传给另一个函数,或者一个函数的返回值为另一个函数。
如果一个函数的返回值为该函数本身,则为递归。
一个函数的函数名作为参数传给另一个函数:
def func():
print("定义一个普通函数")
def high_level(func): # 行参
print("定义一个高阶函数")
# 在函数内部,通过传入的函数参数调用
func()
high_level(func) # 实参,作为参数传给另一个函数
一个函数的返回值(return)为另外一个函数:
def func():
print('定义一个普通函数')
def highLevel(func):
print('定义一个高阶函数')
return func # 返回传入的函数名
# return func() # 直接返回函数自己,即:递归(自己调用自己)
# highLevel(func)
res = highLevel(func) # func是一个普通函数的函数名,func = highLevel(func)
res() # 高阶函数返回函数之后,再调用 func 函数,这里等同于 func()