Python 3.2 documentation機能compose
を含むCollin Winter's functional
moduleを指す:COMPOSE機能および機能モジュール
COMPOSE()関数は、関数合成を実現します。他の ワードでは、outerとinnerの呼び出し可能コードの周りにラッパーを返します。 のように、innerからの戻り値は直接outerに渡されます。
残念ながら、このモジュールは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'がキーワードに建てられているotのない - それは、通常は'に置き換えられますhasattr(obj、 "__call__") 'そうでなければ、上記のコードはうまくいくはずです。 – jsbueno
3.2で 'callable()'が追加されました。 –
私はそれがPython 3.2でうまくいくはずだと思います。他の人が指摘しているように、Python 3.0と3.1では 'callable'を実装する必要がありますが、3.2に満足すればコピー、ペースト、クレジットしてください。 –