# functools.cache()

### &#x20;@functools.cache(*user\_function*)

Простой легкий неограниченный кеш функций. Иногда называется [«memoize»](https://en.wikipedia.org/wiki/Memoization).

Возвращает то же самое, что и `lru_cache (maxsize = None)`, создавая тонкую оболочку вокруг поиска по словарю для аргументов функции. Поскольку ему никогда не нужно удалять старые значения, он меньше и быстрее, чем [lru\_cache ()](https://treasuremaster.gitbook.io/python-docs/moduli-standartnoi-biblioteki-1/funkcionalnye-programmnye-moduli/functools/functools.lru_cache) с ограничением размера.

Например:

```python
@cache
def factorial(n):
    return n * factorial(n-1) if n else 1

>>> factorial(10)      # нет ранее кэшированного результата, выполняет 11 рекурсивных вызовов
3628800
>>> factorial(5)       # просто ищет результат кешированного значения
120
>>> factorial(12)      # делает два новых рекурсивных вызова, остальные 10 кэшированы
479001600
```

*Новое в версии 3.9*.
