Python 学习笔记——12.函数式编程
Python 虽说是一个面向对象的,动态语言,但是它对于函数式编程的支持其实也不错,下面是几个在函数式编程中常用的概念或内置函数。
高阶函数
高阶函数是指可以接受函数作为参数,或返回函数作为结果的函数,Python
直接支持这种语法,例如 1
2
3
4def apply_func(func, value):
return func(value)
result = apply_func(lambda x: x * 2, 5) # 10
lambda expression
lambda 表达式(匿名函数)是用来定义没有名字的函数,通常用于快速定义短小的函数体,尤其是在传递给其他高阶函数时。 Python 支持 lambda 表达式,但是可能是由于缩进等原因,Python只允许 lambda 表达式中含有一个语句作为返回值,例如
1 | add = lambda x, y: x + y |
map
map 是指将一个函数应用于给定序列的每个元素,并返回一个新序列。Python
提供了内置函数 map()
,例如
1 | numbers = [1, 2, 3, 4] |
在编程的语境中,
map
实际上有两种语义:一种是用于映射操作,另一种是更常见的字典数据结构。 在 Python 中,dict
用来表示字典,而map
用于映射操作。然而,在 C++ 中,map
早就被用来表示字典,因此在进行映射操作时,C++ 选择了transform
来代替map
。
filter
filter
是指根据给定的条件从序列中过滤元素,但是并不会返回直接返回满足要求的元素组成的新序列(这样做可能产生不必要的开销),而是会返回一个新的迭代器,这是一个惰性求值的对象,只有在实际迭代时才会计算出包含的元素。Python
提供了内置函数 filter()
,例如
1 | numbers = [1, 2, 3, 4, 5, 6] |
reduce
reduce
是指将一个函数应用于序列的前两个元素,然后将结果与序列中的下一个元素继续进行操作,直到处理完所有元素,最终返回一个单一结果。
应用情景包括对数据进行累积或聚合的操作,如求和、求积、连接字符串等。
Python 提供了 functools.reduce()
来实现这一功能,例如
1 | from functools import reduce |
partial
partial
是指将一个函数的部分参数固定住,返回一个接收其它参数的新函数,通过这种方式可以创建更简洁特化的函数,避免重复传递相同参数。
Python 提供了 functools.partial()
来实现这一功能,例如
1 | from functools import partial |