Модуль functools предназначен для функций высшего порядка: функций, которые действуют или возвращают другие функции. В общем, любой вызываемый объект может рассматриваться как функция для целей этого модуля.
Модуль functools предоставляет инструменты для адаптации или расширения функций и других вызываемых объектов, не переписывая их полностью.
Модуль functools предлагает множество полезных функций более высокого порядка, которые взаимодействуют с другими функциями или возвращают их. Эти функции можно использовать для реализации кэширования функций/методов, перегрузки, создания декораторов и в целом для того, чтобы сделать код немного бол
Декоратор @cached_property модуля functools преобразует метод класса в свойство, значение которого вычисляется один раз, а затем кэшируется как обычный атрибут в течение срока службы экземпляра.
Класс `cmp_to_key()` модуля `functools` преобразует функцию сравнения старого стиля в ключевую функцию. Эта функция в основном используется в качестве инструмента перехода для программ, конвертируемых из Python 2.
Функция cache() модуля functools представляет собой простой легкий неограниченный кеш функций. Иногда называется "*memoization*". Возвращает то же самое, что и @lru_cache(maxsize=None), создавая тонкую оболочку вокруг поиска по словарю для аргументов функции.
Декоратор lru_cache() модуля functools оборачивает функцию с переданными в нее аргументами и запоминает возвращаемый результат соответствующий этим аргументам.
Декоратор класса `total_ordering()` модуля `functools` оборачивает класс, который определяет один или несколько методов сравнения и добавляет остальные.
Функция partial() используется для частичного применения каких то аргументов к вызываемой функции func. Другими словами partial() "замораживает" некоторую часть аргументов и/или ключевых слов, в результате чего создается новый объект с упрощенной записью аргументов вызываемой функции.
Класс partialmethod() модуля functools возвращает новый дескриптор метода func, который ведет себя как функция functools.partial(), за исключением того, что он предназначен для использования в качестве определения метода, а не для прямого вызова.
Функция reduce() модуля functools кумулятивно применяет функцию function к элементам итерируемой iterable последовательности, сводя её к единственному значению.
Декоратор @singledispatch модуля functools создает из обычной функции - универсальную функцию одиночной диспетчеризации.
Декоратор `singledispatchmethod()` модуля `functools` создает из обычного метода класса - универсальный метод одиночной диспетчеризации.
Функция update_wrapper() модуля functools обновляет функцию-обертку, чтобы она выглядела как исходная функция. Другими словами дополняет декоратор, данными из некоторых атрибутов оборачиваемой функции.
Декоратор `@wraps()` модуля `functools` это удобная функция для вызова `@functools.update_wrapper()` в качестве декоратора при определении функции-обертки.
functools.Placeholder (Python 3.14) - это специальный сентинел (одиночный объект), который имеет смысл только внутри functools.partial и означает: "в этом месте будет позиционный аргумент, который передадут позже при вызове".