1.高阶函数
原来上学的时候学过高阶函数,是指一个函数可以接收另一个函数作为参数,函数式编程是指这种高度抽象的编程范式,今天主要学习了map() reduce() fliter() sorted() 闭包 匿名函数
1.1匿名函数
由于匿名函数可以在其他几个函数中使用,所以先说一下,我们在传入函数时,有些时候不需要明显的去定义一个函数,这时可以使用匿名函数,lambda x: x*x,实际上是定义一个参数为x的函数,x*x为返回值
1.2 map()
map()函数接收两个参数,一个函数,一个是Iterable(序列可以为多个),map将传入的函数依次作用于序列的每一个元素,并把结果作为新的Iterator返回,大多数采用list()将其转化为list
其中使用到了capitalize()方法,str.capitalize()将字符串首字母大写,其余小写
1.3 reduce()
reduce()函数接收两个参数,一个为函数(该函数必须为两个参数,一个为Iterable,reduce()与map()不同,其把结果继续和序列中下一个元素做累积,例:reduce(f,[1,2,3,4])=f(f(f(1,2),3),4),使用时需要from functools import reduce
其中用到了split()方法,通过指定分隔符对字符串进行切片,str.split('.',1)
1.4 filter()
与map()类似,也是接收一个函数,和一个序列,但是其是将传入函数作用于序列每一个元素,然后根据其返回值(函数需要是一个判断),决定保留还是丢弃该元素(True保留),其返回同样也是Iterator
1.5 sorted()
排序,返回一个按当前函数排序后的新的序列,sorted(L,key=,reverse=True),一个为序列,一个为key(函数,来指定排序规则),默认为由小到大的顺序,reverse=True为反向排序;字母默认按Ascii值排序,若忽略大小写按字母顺序排序的话,需要将其转化为小写再排序str.lower
1.6 闭包
闭包是一种将函数的结果已一个函数的形式返回,返回的函数并未执行,只有去调取的时候才会执行,返回函数中不可以有变化的变量,否则会影响结果