python的学习 函数式编程(第一天)

时间:2021-04-30 06:17:06

函数式编程是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量;

抽象程度越高,执行效率越低,通过一层层的函数调用完成复杂的任务称为面向过程的程序设计

函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数;

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传入的函数在第二位,接收一个参数,是更改类型的函数