4. 高阶函数

什么是高阶函数(High Order Function)?

高阶函数是指满足以下任一条件的函数:

  1. 能够接受一个或多个函数作为参数。
  2. 能够返回一个函数作为结果。

高阶函数将函数视为“一等公民”,可以像普通变量一样传递和操作,这是函数式编程的核心特性之一。

函数变量

python 的标识符都是变量(关键字除外),他绑定一个对象。 python 中,类、函数、生成器、模块等都是对象。

函数名是一个变量,他绑定的是 一个函数(对象)。

示例

p = print
p("hello world!")

高阶函数特征

  1. 一个函数可以作为另一个函数的实参传递:

如:

# 一个函数可以作为另一个函数的实参传递:

def myfunc(data, func):
    return func(data)

lst = [80, 100, 20, 60, 40]

value = myfunc(lst, max)
print('value:', value)  # 100

value = myfunc(lst, sum)  # 300
print('value:', value)
  1. 函数可以作为另一个函数的返回值。

如:

# 函数可以作为另一个函数的返回值。

def get_function(operation):
    if operation == '求最大':
        return max
    elif  operation == '求最小':
        return min
    elif  operation == '求和':
        return sum
    else:
        raise ValueError('操作不存在')

lst = [80, 100, 20, 60, 40]

func = get_function('求和')
print(func(lst))

func = get_function('求最大')
print(func(lst))

练习

看懂下面程序在做什么:

def fx(f, x, y):
    print(f(x,y))

fx((lambda a, b: a + b), 100, 200)
fx(lambda a, b: a**b, 3, 4)