Функция compose и функциональный модуль

Документация Python 3.2 относится к функциональному модулю Коллина Винтера , который содержит функцию compose :

Функция compose () реализует композицию функций. В других слов, он возвращает оболочку вокруг внешних и внутренних вызываемых объектов, например что возвращаемое значение из внутреннего передается непосредственно во внешний.

К сожалению, этот модуль не обновлялся с июля 2006 года; Интересно, есть ли в наличии замена.

На данный момент мне нужна только функция compose . Подходит ли следующее исходное определение function.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 в некоторой степени связан; он спрашивает, должен ли Python поддерживать специальный синтаксис для compose .

13
задан Community 23 May 2017 в 12:18
поделиться