函数式编程的一个特点是,允许把函数作为参数传入另一个函数,还允许返回一个函数。
1. 高阶函数
1.1. 变量可以指向函数
1 | # 变量可以指向函数 |
1.2. 函数名也是变量
1 | # 如果改变原指向函数的变量 abs 指向其他对象 |
1.3. 给函数传入函数
既然变量可以指向函数,函数的参数可以接收变量,因此一个函数就可以接收另一个函数作为参数,即–高阶函数。
1 | def addabsolute(x, y, f): |
1.4. map/reduce
1 | # map(func, Iterable) -> Iterator. map将函数func依次作用在每一个Iterable元素上, 返回一个Iterator. |
1.5. fliter
1 | # fliter(func, Iterable) -> Iterator. fliter 将函数作用于序列中的每一个元素,根据返回值是T/F来决定保留或去除该元素. |
1.6. sorted
1 | # 高阶排序算法 - sorted()排序其实是实现了一个映射函数 |
2. 返回函数
2.1. 高阶函数可将函数作为结果返回
1 | # 累加函数 |
2.2. 闭包
1 | # 闭包结构中,返回的函数并没有立即执行, 调用f()才执行 |
3. 匿名函数 - lambda
匿名函数无需显示的定义, 冒号前面的表示函数参数, 返回值即表达式的结果.
1 | list(filter(lambda x: x % 2 ==1, range(1, 10))) |
4. 装饰器 - decorator
1 | # 装饰器其实就是一个返回函数的高阶函数 |
5. 偏函数 - Partial function
Python的 functools 模块提供了很多功能, 偏函数就是其一。
1 | # 偏函数的主要作用即将含参的函数设置默认参数后生成新函数, 简化调用. |