反向组合函数
执行从左到右的函数组合。
- 使用
functools.reduce()
执行从左到右的函数组合。 - 第一个(最左边)函数可以接受一个或多个参数;其余的函数必须是一元的。
from functools import reduce
def compose_right(*fns):
return reduce(lambda f, g: lambda *args: g(f(*args)), fns)
add = lambda x, y: x + y
square = lambda x: x * x
add_and_square = compose_right(add, square)
add_and_square(1, 2) # 9