- 函数式编程
- 允许把函数本身作为一个变量传入另一个函数,同时允许返回一个函数
- 高阶函数
- 一个变量指向一个函数,则可以用这个变量代替这个函数进行计算
- map/reduce
- map/reduce google文档
- map()
- 接受两个参数,一个是函数,一个是序列,map将传入的函数一次作用到序列的每个元素,并把结果作为新的list返回
L = []
for n in [1, 2, 3, 4, 5, 6, 7, 8, 9]:
L.append(f(n))
print L
- reduce
- 接受两个参数,函数和序列
- 把结果和序列的下一个元素做累积计算(加和)
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
- filter
- 接受一个函数和一个序列
- 把传入的函数依次作用于每个元素,然后根据返回值是
true
还是false
决定保留还是丢弃该元素
- 排序
sorted
- 直接对list排序
- 可以接受一个比较函数来实现自定义的排序
- 匿名函数
- ·lambda
参数:表达式
- ·lambda
- 装饰器 decorator
- 函数也是一个对象,函数对象可以被赋值给变量,所以通过变量也可以调用函数
- 函数对象有一个
__name__
属性,可以拿到函数的名字 - decorator 返回函数的高阶函数
- 偏函数
- functools.partial 帮助创建偏函数
import functools
- 偏函数就是把一个函数的某些参数给固定,也就是作为默认值,返回一个新的函数,使得调用新的函数会非常的简单
- 可以接收函数对象、*args和**kw这3个参数
- functools.partial 帮助创建偏函数
TODO:
1. @ 语法
2.