主题
匿名函数与高阶函数
在 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()
是处理序列的利器。- 熟练使用高阶函数有助于提升代码表达力与可维护性。