函数式编程
- 特点:
- 不是纯函数的编程,允许有变量
- 支持高阶函数:函数可作为变量传入
- 支持闭包:可以返回函数
高阶函数
- 内置函数:
- map(function f, list l):将f作用在l的每个元素上,并返回一个新的list
- reduce(function f, list l):对l中每个元素反复使用f,最后返回一个结果
- filter(function f, list l):f是对l中每个元素进行判断,去掉不符合的元素,剩余元素返回一个新的list
- sorted(function f, list l):f中定义排序的规则,对l中元素进行按照f的规则排序
闭包:内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)。
- 特点:内层函数使用外层的局部变量,要保证局部变量不变
匿名函数
- 关键字lambda 表示匿名函数,冒号前面的 x 表示函数参数。
- 匿名函数限制,就是只能有一个表达式,不写return,返回值就是该表达式的结果。
装饰函数(高阶函数):使用 decorator 用Python提供的 @ 语法,这样可以避免手动编写 f = decorate(f),使用decrator之后会改造函数的一些属性,为了防止函数的属性修改,所以在用decrator时,利用@functools.wraps(f)将函数的属性都复制过去,这句话放在最里层的高阶函数的上面。
偏函数
- functools.partial可以把一个参数多的函数变成一个参数少的新函数,少的参数需要在创建时指定默认值