函数式编程
python支持的函数式编程
不是纯函数式编程:允许有变量
支持高阶函数:函数也能作为变量传入
支持闭包:有了闭包就能返回函数
有限度地支持匿名函数
高阶函数:能接受函数做参数的函数
变量可以指向函数
函数的参数可以接受变量
一个函数可以接受另一个函数作为参数
- map()是python内置的高阶函数,它接受一个函数f和一个list,并通过函数f依次作用在list上的每个元素上,得到一个新的list并返回
- capitalize() 首字母大写,其余全部小写
- reduce()函数也是python内置的一个高阶函数,reduce()函数接受的参数和map()类似,一个函数f,一个list,但行为和map()不同, reduce()传入的函数f必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值
- reduce() 还可以接收第3个可选参数,作为计算的初始值。
- filter() 函数是python内置的另一个有用的高阶函数, filter()函数接收一个函数f和一个list,这个函数f的作用是对每个元素进行判断,返回true或者false,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list
- s.strip(rm)删除s字符串中开头、结尾处的rm序列的字符,当rm为空时,默认删除空白符
- python内置的sorted()函数可对list进行排序, 但是sorted也是一个高阶函数,它可以接收一个比较函数来实现自定义排序 比较函数的自定义是,传入两个待比较的元素x,y,如果x应该排在y的前面,返回-1,如果x应该排在y的后面,返回1;如果相等,返回0
- sorted函数也可以对字符串进行排序,默认按照ASCII大小来比较
- Python的函数不但可以返回int,str,list,dict等数据类型,还可以返回函数
- python中闭包:内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,成为闭包 closure
- 闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要争取使用闭包,就要确保引用的局部变量在函数返回后不能变
- 高阶函数可以接收函数做参数,有些时候我们不需要显示得定义函数,直接传入匿名函数更方便 lambda x:x*x 匿名函数只能有一个表达式,不写return,返回值就是该表达式的结果
- 装饰器