函数式编程是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量;
抽象程度越高,执行效率越低,通过一层层的函数调用完成复杂的任务称为面向过程的程序设计
函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数;
python对函数式编程提供了部分支持。python允许使用变量,python并不是纯函数式编程。
1.高阶函数
在给变量赋值时,允许我们将函数赋值给变量;
而函数的调用实质就是对函数内参数变量的赋值;
当给一个函数允许传入的参数是一个函数时,该函数就是一个高阶函数;
高阶函数也是一种函数式编程。
2.常用的python内建的高阶函数
(1)map()函数,接收两个参数,一个函数,一个Iterable(迭代类型)的序列;
map将传入的函数作用于迭代类型的每个元素,把结果返回为新的Iterator(迭代器类型)
注意:由于map返回值为Iterator,所以经常与list()函数搭配使用;
注意:map传入的函数往往只有接收一个参数
(2)reduce()函数,接收两个参数,一个函数,一个Iterable的序列;
reduce将每次的计算结果继续与序列中的下一个元素做累积计算。
注意:reduce传入的函数,往往接收两个参数
(3)filter()函数,接收两个参数,一个函数,一个Iterable(迭代类型)的序列;
filter将传入的函数作用于迭代类型的每个元素,根据返回值是True还是False决定留下还是丢弃;
filter与map相类似返回的都为Iterator,因此也经常与list()函数搭配使用。
注意:filter传入的函数,往往接收一个参数,且此函数的返回值为布尔值
(4)sorted()函数,接收两个参数,一个list的列表,一个keys函数(可不填);
因为keys函数为默认参数,所以选填,需要使用时用“keys=abs”的方式;
sorted默认排序是对数字比大小,对字符串比ASCII的大小。
注意:sorted传入的函数在第二位,接收一个参数,是更改类型的函数