Compose


标题:组合函数 类型:片段 语言:Python 标签:[函数] 封面:tram-car-2 修改日期:2020-11-02

执行从右到左的函数组合。

  • 使用functools.reduce()执行从右到左的函数组合。
  • 最后(最右边)的函数可以接受一个或多个参数;其余的函数必须是一元的。
from functools import reduce

def compose(*fns):
  return reduce(lambda f, g: lambda *args: f(g(*args)), fns)

add5 = lambda x: x + 5
multiply = lambda x, y: x * y
multiply_and_add_5 = compose(add5, multiply)
multiply_and_add_5(5, 2) # 15