Сообщить об ошибке.

Модуль functools в Python, инструменты расширения функций

Инструменты расширения функций и других вызываемых объектов

Модуль functools предназначен для функций высшего порядка: функций, которые действуют или возвращают другие функции. В общем, любой вызываемый объект может рассматриваться как функция для целей этого модуля.

Модуль functools предоставляет инструменты для адаптации или расширения функций и других вызываемых объектов, не переписывая их полностью.


Способы использования модуля functools в Python

Модуль functools предлагает множество полезных функций более высокого порядка, которые взаимодействуют с другими функциями или возвращают их. Эти функции можно использовать для реализации кэширования функций/методов, перегрузки, создания декораторов и в целом для того, чтобы сделать код немного бол

Декоратор @cached_property модуля functools в Python

Декоратор @cached_property модуля functools преобразует метод класса в свойство, значение которого вычисляется один раз, а затем кэшируется как обычный атрибут в течение срока службы экземпляра.

Функция cmp_to_key() модуля functools в Python

Класс `cmp_to_key()` модуля `functools` преобразует функцию сравнения старого стиля в ключевую функцию. Эта функция в основном используется в качестве инструмента перехода для программ, конвертируемых из Python 2.

Декоратор @cache() модуля functools в Python, кеширующий декоратор

Функция cache() модуля functools представляет собой простой легкий неограниченный кеш функций. Иногда называется "*memoization*". Возвращает то же самое, что и @lru_cache(maxsize=None), создавая тонкую оболочку вокруг поиска по словарю для аргументов функции.

Декоратор @lru_cache() модуля functools в Python

Декоратор lru_cache() модуля functools оборачивает функцию с переданными в нее аргументами и запоминает возвращаемый результат соответствующий этим аргументам.

Декоратор @total_ordering модуля functools в Python

Декоратор класса `total_ordering()` модуля `functools` оборачивает класс, который определяет один или несколько методов сравнения и добавляет остальные.

Функция partial() модуля functools в Python

Функция partial() используется для частичного применения каких то аргументов к вызываемой функции func. Другими словами partial() "замораживает" некоторую часть аргументов и/или ключевых слов, в результате чего создается новый объект с упрощенной записью аргументов вызываемой функции.

Класс partialmethod() модуля functools в Python

Класс `partialmethod()` модуля `functools` возвращает новый дескриптор метода `func`, который ведет себя как функция `functools.partial()`, за исключением того, что он предназначен для использования в качестве определения метода, а не для прямого вызова.

Функция reduce() модуля functools в Python

Функция reduce() модуля functools кумулятивно применяет функцию function к элементам итерируемой iterable последовательности, сводя её к единственному значению.

Декоратор @singledispatch модуля functools в Python

Декоратор @singledispatch модуля functools создает из обычной функции - универсальную функцию одиночной диспетчеризации.

Декоратор @singledispatchmethod модуля functools в Python

Декоратор `singledispatchmethod()` модуля `functools` создает из обычного метода класса - универсальный метод одиночной диспетчеризации.

Декоратор @update_wrapper() модуля functools в Python

Декоратор `@update_wrapper()` модуля `functools` обновляет функцию-обертку, чтобы она выглядела как исходная функция. Другими словами дополняет декоратор, данными из некоторых атрибутов оборачиваемой функции.

Декоратор @wraps() модуля functools в Python

Декоратор `@wraps()` модуля `functools` это удобная функция для вызова `@functools.update_wrapper()` в качестве декоратора при определении функции-обертки.