Python 3.2 documentation指Collin Winter's functional
module含有功能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
的特殊语法。
Python 3里有加时赛的'callable'内置关键字 - 它通常是与'取代hasattr(obj,“__call__”)'否则,上面的代码应该可以工作。 – jsbueno
'callable()'被添加回3.2中的语言。 –
我认为在Python 3.2中应该没问题。正如其他人指出的那样,对于Python 3.0和3.1,您需要实现'callable',但如果您对3.2感到满意,只需复制,粘贴和信用。 –