day4 liaoxuefeng---函数式编程

一、概述:

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

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

二、高阶函数:

       1、 编写高阶函数,就是让函数的参数能够接收别的函数。

        一个最简单的高阶函数:    

    def add(x, y, f):
    return f(x) + f(y)

当我们调用add(-5, 6, abs)时,参数xyf分别接收-56abs,根据函数定义,我们可以推导计算过程为:
  x = -5
  y = 6
  f = abs
  f(x) + f(y) ==> abs(-5) + abs(6) ==> 11
  return 11

    用代码验证一下:

>>> add(-5, 6, abs)
11

2、
map()/reduce()
用普通的算法也能写出来,map()或者reduce()就是抽象了算法。
3、filter()
4、sorted()

sorted()是个排序算法,排序也是在程序中经常用到的算法。无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小。如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来。

三、返回函数
高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。

四、匿名函数
当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。
关键字lambda表示匿名函数,冒号前面的x表示函数参数。

五、装饰器


六、偏函数




原文地址:https://www.cnblogs.com/mecy1222/p/7448358.html