高阶函数
高阶函数(Higher-Order Function) 是函数式编程中的一个核心概念,它在 Python 和 JavaScript 等语言中都非常重要。高阶函数的特点是 **可以接受函数作为参数,或者返回函数作为结果
1. 什么是高阶函数?
高阶函数是指满足以下至少一个条件的函数:
- 接受一个或多个函数作为参数。
- 返回一个函数作为结果。
换句话说,高阶函数是对函数进行操作的函数。
2. 高阶函数的特点
- 函数是一等公民:在支持高阶函数的语言中,函数可以像普通变量一样被传递、赋值和返回。
- 抽象能力强:高阶函数可以将通用的逻辑抽象出来,减少代码重复。
- 支持函数式编程:高阶函数是函数式编程的基础,常用于实现映射(map)、过滤(filter)、归约(reduce)等操作。
3. 高阶函数的使用场景
高阶函数常用于以下场景:
- 将函数作为参数传递:比如
map()、filter()、sorted()等内置函数。 - 将函数作为返回值:比如闭包、装饰器等。
- 抽象通用逻辑:比如将重复的代码抽象为高阶函数。
4. 高阶函数示例
示例 1:接受函数作为参数
不使用高阶函数,求两个数的绝对值和
def getSum(a, b):
return abs(a) + abs(b)
print(getSum(1, 2))
使用高阶函数
# 定义一个高阶函数,f 是一个函数
def getSum2(a, b, f):
return f(a) + f(b) # 每个值传入 f 再求和,f 就灵活了,可以是任意函数
# 使用高阶函数,求两个数之和,abs 是 python 内置的函数,这里只是传入函数名,不要带小括号
print(getSum2(1, 2, abs))
# 也可以使用自定义的函数传入高阶函数
def fun(a):
return a ** 2
print(getSum2(1, 2, fun)) # 使用高阶函数,求两个数的平方和
# 结合 lambda,也是求两个数的平方和
print(getSum2(1, 2, lambda n: n ** 2))
示例 2:返回函数作为结果
inner_fun 执行的时候会使用 outer_fun 的参数,又是闭包的示例
# 定义一个高阶函数,返回一个函数
def outer_fun(n):
def inner_fun(x):
return x * n
return inner_fun # 注意这里返回的是函数名(不要加括号)
# 使用高阶函数创建一个乘以 2 的函数
inner_fun = outer_fun(2)
print(inner_fun(5)) # 输出: 10
# 直接调用
print(outer_fun(2)(5)) # 输出 10

浙公网安备 33010602011771号