一、概述:
函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数!
Python对函数式编程提供部分支持。由于Python允许使用变量,因此,Python不是纯函数式编程语言。
二、高阶函数:
1、 编写高阶函数,就是让函数的参数能够接收别的函数。
一个最简单的高阶函数:
def add(x, y, f):
return f(x) + f(y)
当我们调用add(-5, 6, abs)
时,参数x
,y
和f
分别接收-5
,6
和abs
,根据函数定义,我们可以推导计算过程为:
x = -5
y = 6
f = abs
f(x) + f(y) ==> abs(-5) + abs(6) ==> 11
return 11
用代码验证一下:
>>> add(-5, 6, abs)
map()/reduce()
11 2、
用普通的算法也能写出来,map()或者reduce()就是抽象了算法。
3、filter()
4、sorted() sorted()是个排序算法,排序也是在程序中经常用到的算法。无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小。如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来。 三、返回函数
高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。 四、匿名函数
当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。
关键字lambda
表示匿名函数,冒号前面的x
表示函数参数。 五、装饰器 六、偏函数