如何传递 "extra" 参数来组合函数

How to pass "extra" parameter to compose function

我正在寻找一种组合函数的方法,可以选择传递 'extra' 参数。

示例:

from toolz import compose_left

def g(a, b, c) -> int:
    return a + b + c

def f(a, b = 100) -> int:
    return a + b

当我这样做时:

compose_left(g, f)(1,2,3)

我明白了:

106

很酷。

但是有没有办法在 compose 中定义函数 g 的参数 b 和 c?

像这样:

compose_left(g(b=2,c=3), f)(1)

现在我明白了:

TypeError: g() missing 1 required positional argument: 'a'

我正在寻找可以执行此操作的函数或程序包。

您正在寻找 functools.partial

compose_left(functools.partial(g, b=2, c=3), f)(1)  # 106