高阶函数

高阶函数(Higher-Order Function) 是函数式编程中的一个核心概念,它在 Python 和 JavaScript 等语言中都非常重要。高阶函数的特点是 **可以接受函数作为参数,或者返回函数作为结果


1. 什么是高阶函数?

高阶函数是指满足以下至少一个条件的函数:

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

换句话说,高阶函数是对函数进行操作的函数。


2. 高阶函数的特点

  • 函数是一等公民:在支持高阶函数的语言中,函数可以像普通变量一样被传递、赋值和返回。
  • 抽象能力强:高阶函数可以将通用的逻辑抽象出来,减少代码重复。
  • 支持函数式编程:高阶函数是函数式编程的基础,常用于实现映射(map)、过滤(filter)、归约(reduce)等操作。

3. 高阶函数的使用场景

高阶函数常用于以下场景:

  1. 将函数作为参数传递:比如 map()filter()sorted() 等内置函数。
  2. 将函数作为返回值:比如闭包、装饰器等。
  3. 抽象通用逻辑:比如将重复的代码抽象为高阶函数。

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
posted @ 2025-03-09 10:34  CyrusHuang  阅读(199)  评论(0)    收藏  举报