文章目录
函数式编程
1. 什么是函数式编程
- 函数名也是一个变量
- 既然是变量就可以当成另外一个函数的参数,也可以作为另外一个函数的返回值(闭包)
- 函数式编程就是当一个函数以另外一个函数作为参数后者是返回值的时候就是函数式编程
2. 函数的可重入性
- 函数运行时不会读取或者是改变除了局部变量之外的其他的变量
- 如果每次调用的时候传入的参数都相同得到的结果也相同
- 满足上述两条的就说明这个函数是可重入的函数
高阶函数
1. 高阶函数的定义,满足下列条件之一的函数
- 以函数作为参数
- 返回值是一个函数
2. map 函数(映射)
-
函数原型
iterable = map(function,iterable1,iterable2)
-
作用
将后面的可迭代对象作为参数,传入到前面的函数中,将结果放入到一个新的可迭代对象中.
-
必须满足的条件
- 后面的可迭代对象和前面的参数的个数保持一致
- 映射结束的条件是,如果有一个可迭代对象结束了,整个函数也就结束.
3. filter(过滤)
-
原型
iterable = filter(function,iterable)
-
作用
- 将一个可迭代对象的元素遍历分别代入到function
- 如果function的返回值为真,就保留,如果为假,就丢弃,然后将保留结果放入到一个可迭代对象返回
4. reduce(累计函数)
-
原型
ret = reduce(function,iterable,[initializer]
-
作用
- 接收两个参数,最后那个参数是可选的,指定初始值.
- 这个函数一开始会将iterable里面的前两个参数带入到
function
中,求得结果res - res和后面的参数,组成一个新参数(res,it3)带入的
function
中得到res2,后面重复 function
必须是两个参数,Python3中reduce
不再是内置的模块,而是在functools
模块中
5. sorted(排序)
-
原型
list = sorted(iterable,key=None,reverse=False)
-
作用
- 对一个可迭代对象iterable,按照key这个函数的结果,进行排序,reverse控制对结果是否翻转
- 如果key不指定,模式是按照升序规则排序,如果reverse不提供,默认是不翻转
6. zip(元组打包)
-
原型
zipObject = zip([iterable1,iterable2,...])
-
作用
- 将可迭代对象作为参数,将参数中的元素打包成一个元组,然后返回由这些元组组成的对象
- 如果可迭代对象的元素的个数不一致,则按照最少元素的可迭代对象进行返回