Python函数式编程

1. 装饰器

在代码运行期间动态增加功能的方式,称之为「装饰器」(decorator)。本质上,decorator 就是一个返回函数的高阶函数,它需要接受一个函数作为输入参数,并返回一个函数。

1
2
3
4
5
def log(func):
def wrapper(*args, **kw):
print('call %s():' % func.__name__)
return func(*args, **kw)
return wrapper

上面的 log 就是一个 decorator。Python 的 @ 语法可以把 decorator 置于函数的定义处:

1
2
3
@log
def now():
print('2015-3-25')

此时调用 now 函数,会在运行 now 前运行 log(now) 打印日志。

2. 偏函数

functools.partial 的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。

1
2
3
4
5
6
7
8
from functools import partial

# 求幂函数
def pow(a, b):
return a**b

# 定义一个平方函数
square = partial(pow, b=2)