Это модуль для высокоуровневых операций над функциями. С его помощью вы можете кэшировать значения, разделять функции и создавать декораторы. @cache — замена @lru_cache(None), добавленная в Python 3.9. Декоратор, позволяющий кэшировать результат работы функции. partial() — возвращает функцию, при вызове которой передаются заранее переданные параметры. @wraps — определяет функцию как декоратор, за счёт реализации важных атрибутов: __name__, __module__, __doc__...
Функция reduce модуля functools позволяет применить указанную функцию к парам значений из итерируемого объекта. Рассмотрим примеры использования данной полезной функции. В первом примере мы берем функцию перемножения mult, перемножаем элементы списка lst: 1 * 2 = 2, затем результат умножения первых двух элементов умножаем на 3-й элемент списка - и так до конца списка lst Теперь более интересный случай Для краткости здесь мы используем анонимную функцию, чтобы получить разницу двух чисел...