学习第七天

浏览: 1388

函数式编程   Functional Programmming

1.计算机和计算的概念

计算机是CPU执行的加减乘除的指令代码,以及各种条件判断和跳转指令,所以,汇编语言是贴近计算机的语言。

计算则是指数学意义上的计算,越是抽象的计算,离计算机的硬件越远。

在编程语言中,越低级的语言,越贴近计算机,抽象程度低,执行效率低,执行效率高,比如c语言;越高级的语言,越贴近计算,抽象程度越高,执行效率低。比如Lisp语言。

2.函数式编程的特点:

函数式编程就是一种抽象程度很高的编程范式,

纯粹的函数式编程编写的函数是没有变量的,因此。输入是确定,那么输出也是确定的,这种纯函数我们称之为没有副作用,

使用变量的程序设计语言,由于函数内部变量状态不确定,同样的输入,会有不同的输出,因此这种函数是有副作用的。

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

Python对函数式编程提供部分支持,由于Python允许使用变量,因此,Python不是纯函数式编程。


高阶函数  Higher-order function

变量可以指向函数:

Python中内置了很多函数,我们可以直接调用,我们还可以把函数本身赋值给一个变量,可以通过这个变量来调用这个函数。

image.png

函数名也是变量

函数名:其实就是指向函数的变量。

传入函数:

高阶函数:一个函数可以接收另一个函数作为参数。

函数式编程就是指这种高度抽象的编程范式。


Python内建了map()和reduce()函数

map函数:map()函数接收两个参数,一个是Iterable,map将传入的函数依次作用到序列的每一个元素,并把结果作为新的Iterator返回。

举例:计算一个列表每个元素的平方。

image.png


reduce函数:

reduce函数也是接收两个参数,把结果继续和序列的下一个元素做累积计算。

image.png

filter函数

接收一个函数和一个序列,filter()函数把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素,用于过滤序列s

同时,filter函数返回也是一个Iterator,是一个惰性序列,所以要强迫filter函数完成计算题,需要用list()函数获得所有结果并返回list.


sorted函数:

  • 排序算法,
  • 可以直接对list进行排序,
  • 可接受一个key函数来实现自定义的排序,key指定的函数将作用于list的每一个元素上,并根据key函数返回的结果进行排序。

image.png

推荐 0
本文由 小白学Python 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册