局部

partial 函数从另一个函数创建部分函数应用程序。它用于绑定到函数的某些参数(或关键字参数),并在没有已定义的参数的情况下生成可调用的值。

>>> from functools import partial
>>> unhex = partial(int, base=16)
>>> unhex.__doc__ = 'Convert base16 string to int'
>>> unhex('ca11ab1e')
3390155550

partial(),顾名思义,允许对函数进行部分评估。我们来看下面的例子:

In [2]: from functools import partial

In [3]: def f(a, b, c, x):
   ...:     return 1000*a + 100*b + 10*c + x
   ...: 

In [4]: g = partial(f, 1, 1, 1)

In [5]: print g(2)
1112

g 被创建时,f,它接受四个参数(a, b, c, x),也会对前三个参数 a, b, c, 进行部分评估。当 g 被称为 g(2) 时,f 的评估完成,g(2) 将第四个参数传递给 f

想到 partial 的一种方法是移位寄存器; 当时将一个参数推入某个函数。partial 对于数据作为流进入的情况很方便,我们不能传递多个参数。