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

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

Легкий кеширующий декоратор функций

Синтаксис:

import functools

# Доступен с версии Python 3.9.
cache = functools.cache(user_function)

# или
@functools.cache
def my_function():
    ...

Параметры:

  • user_function - функция, которую надо кэшировать.

Возвращаемое значение:

  • исходную функцию с возможностью кэширования результатов.

Описание:

Функция cache() модуля functools представляет собой простой легкий неограниченный кеш функций. Иногда называется "memoization".

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

Пример использования декоратора @functools.cache:

import functools

@functools.cache
def factorial(n):
    return n * factorial(n-1) if n else 1

# нет ранее кэшированного результата, 
# выполняет 11 рекурсивных вызовов
>>> factorial(10)
# 3628800

# просто ищет результат кэшированного значения
>>> factorial(5)
# 120

# делает два новых рекурсивных вызова, 
# остальные 10 кэшируются
>>> factorial(12)
# 479001600