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感到滿意,只需複製,粘貼和信用。 –