python 高级函数

python 高级函数

Python 的**高阶函数(Higher-Order Functions)**是指能够接受其他函数作为参数,或返回函数作为结果的函数。它们是函数式编程的核心概念,可以显著简化代码逻辑,提升代码复用性和可读性。以下是 Python 中高阶函数的详细解析:

一、高阶函数的基本概念高阶函数的两种典型行为:

以函数为参数:例如 map(), filter(), sorted()。返回函数作为结果:例如闭包、装饰器。二、内置高阶函数及用法1. map(function, iterable)作用:对可迭代对象中的每个元素应用函数,返回一个迭代器。示例:numbers = [1, 2, 3, 4]

squared = map(lambda x: x**2, numbers) # 生成迭代器

print(list(squared)) # [1, 4, 9, 16]

等价列表推导式:squared = [x**2 for x in numbers]

2. filter(function, iterable)作用:筛选满足条件的元素,返回一个迭代器。示例:numbers = [1, 2, 3, 4]

even = filter(lambda x: x % 2 == 0, numbers)

print(list(even)) # [2, 4]

等价列表推导式:even = [x for x in numbers if x % 2 == 0]

3. functools.reduce(function, iterable[, initial])作用:累积计算(需导入 functools)。示例(求列表元素的乘积):from functools import reduce

numbers = [1, 2, 3, 4]

product = reduce(lambda x, y: x * y, numbers) # 1*2*3*4 = 24

4. sorted(iterable, key=function)作用:根据 key 函数自定义排序规则。示例(按字符串长度排序):words = ["apple", "banana", "cherry"]

sorted_words = sorted(words, key=lambda x: len(x)) # ['apple', 'cherry', 'banana']

三、lambda 表达式匿名函数 lambda 常用于简化高阶函数的参数传递:

add = lambda a, b: a + b

print(add(3, 5)) # 8

# 结合 map 使用

result = map(lambda x: x.upper(), ["a", "b", "c"])

print(list(result)) # ['A', 'B', 'C']

四、自定义高阶函数1. 接收函数作为参数def apply_operation(func, a, b):

return func(a, b)

print(apply_operation(lambda x, y: x * y, 3, 4)) # 12

2. 返回函数(闭包)def make_multiplier(n):

def multiplier(x):

return x * n

return multiplier

double = make_multiplier(2)

print(double(5)) # 10

五、高阶函数的应用场景批量数据处理:如转换、过滤列表元素。动态逻辑注入:通过传递不同函数改变行为。装饰器(高级应用):python复制六、高阶函数 vs. 列表推导式简单转换/过滤

map

/

filter

+

lambda

更简洁,直接内联条件

复杂多步操作

需嵌套或组合多个高阶函数

可读性可能下降

惰性求值(节省内存)

map

/

filter

返回迭代器

生成完整列表

七、注意事项可读性:避免过度嵌套高阶函数,尤其是结合 lambda 时。性能:对于大数据量,迭代器(如 map)可能比列表推导式更高效。Python 3 特性:map/filter 返回迭代器而非列表,需用 list() 转换。总结高阶函数通过将函数作为参数或返回值,极大地增强了代码的灵活性和抽象能力。合理使用 map、filter、reduce 和自定义高阶函数,可以让代码更简洁高效。

← 上一篇: 台湾怎么给大陆转钱
下一篇: 为什么豆浆机一直响(探究豆浆机持续响的原因与解决方法) →

相关推荐