Python 3.2 文档引用了Collin Winter 的functional
模块,其中包含函数compose
:
compose() 函数实现了函数组合。换句话说,它返回一个围绕外部和内部可调用对象的包装器,这样内部的返回值就会直接馈送到外部。
不幸的是,这个模块自 2006 年 7 月以来就没有更新过;我想知道是否有任何替代品。
现在,我只需要compose
函数。下面的原始functional.compose
定义对 Python 3 仍然有用吗?
def compose(func_1, func_2, unpack=False):
"""
compose(func_1, func_2, unpack=False) -> function
The function returned by compose is a composition of func_1 and func_2.
That is, compose(func_1, func_2)(5) == func_1(func_2(5))
"""
if not callable(func_1):
raise TypeError("First argument to compose must be callable")
if not callable(func_2):
raise TypeError("Second argument to compose must be callable")
if unpack:
def composition(*args, **kwargs):
return func_1(*func_2(*args, **kwargs))
else:
def composition(*args, **kwargs):
return func_1(func_2(*args, **kwargs))
return composition
这个SO question有点相关;它询问 Python 是否应该支持compose
.