Python 使用reduce()和partial(),可以将sum()
函数定义为partial(reduce, operator.add)
,这也提示我们可以用类似的方法创建其他映射和归约。可以通过部分应用函数而不是匿名函数定义常用的归约函数,如下所示:
sum2 = partial(reduce, lambda x, y: x + y ** 2)
count = partial(reduce, lambda x, y: x + 1)
现在可以通过sum2(some_data)
或者count(some_iter)
来使用这些函数了。前面讲过,这样的实现方法性能优势不明显,但仍然不失为一项重要的技术,在处理特别复杂计算时可以使用部分应用函数实现简化。