教程 python tutorial

匿名函数与高阶函数

在 Python 中,函数不仅可以像变量一样被传递,还能作为其他函数的参数或返回值。本章将介绍匿名函数(lambda 表达式)与高阶函数的基本用法和实际应用。

匿名函数(lambda)

匿名函数是没有名字的函数,常用于简洁地表示一些功能简单的函数。

语法

python
lambda 参数列表: 表达式

示例

python
add = lambda x, y: x + y
print(add(3, 5))  # 输出:8

lambda 表达式适用于临时、一次性使用的小函数。

高阶函数

高阶函数是指接受函数作为参数或返回另一个函数的函数。

常见的高阶函数包括:

  • map()
  • filter()
  • reduce()(需从 functools 模块导入)

map()

map(func, iterable) 将函数应用于可迭代对象中的每个元素。

python
nums = [1, 2, 3, 4]
squares = list(map(lambda x: x**2, nums))
print(squares)  # 输出:[1, 4, 9, 16]

filter()

filter(func, iterable) 用于筛选出使函数返回 True 的元素。

python
nums = [1, 2, 3, 4]
even = list(filter(lambda x: x % 2 == 0, nums))
print(even)  # 输出:[2, 4]

reduce()

reduce(func, iterable) 累积地对序列元素进行计算。

python
from functools import reduce

nums = [1, 2, 3, 4]
product = reduce(lambda x, y: x * y, nums)
print(product)  # 输出:24

函数作为返回值

函数可以返回另一个函数,这在装饰器、回调等场景中非常有用。

python
def make_multiplier(n):
    return lambda x: x * n

double = make_multiplier(2)
print(double(5))  # 输出:10

实战示例:对字符串列表统一处理

python
names = ["alice", "BOB", "ChArLiE"]
standardized = list(map(lambda name: name.capitalize(), names))
print(standardized)  # 输出:['Alice', 'Bob', 'Charlie']

总结

  • lambda 提供了一种快速定义短小函数的方式。
  • 高阶函数让代码更加函数式、简洁。
  • map()、filter() 和 reduce() 是处理序列的利器。
  • 熟练使用高阶函数有助于提升代码表达力与可维护性。