Python 函数式编程(三)

函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数!
Python对函数式编程提供部分支持。由于Python允许使用变量,因此,Python不是纯函数式编程语言。

高阶函数

高阶函数英文叫Higher-order function。

变量可以指向函数

1
2
3
>>> f = abs
>>> f(-10)
10

函数名也是变量

1
2
3
>>> abs = 10
abs
10

传入函数
一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。

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

1
2
3
4
def add(a,b ,fun):
return fun(a) + fun(b)
l = add(-5,3,abs)
print(l)

map/reduce

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

1
2
3
4
5
6
>>> def f(x):
... return x * x
...
>>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> list(r)
[1, 4, 9, 16, 25, 36, 49, 64, 81]

map()传入的第一个参数是f,即函数对象本身。由于结果r是一个Iterator,Iterator是惰性序列,因此通过list()函数让它把整个序列都计算出来并返回一个list。