Python Glossary English

Python 3.2+functoolsфункция

functools.lru_cache

functools

Декоратор: кеширует результаты функции по аргументам (LRU, ограничен maxsize). Ускоряет повторные и рекурсивные вызовы.

Синтаксис

@functools.lru_cache(maxsize=128)

Ключом кеша служат сами аргументы, поэтому f(2) и f(n=2) занимают разные ячейки, а список или словарь в аргументах немедленно дают TypeError: unhashable. Кеш один на функцию и живёт до конца программы: навешанный на метод, он удерживает self и мешает сборке мусора — чистить через f.cache_clear(). Для рекурсии дефолтного maxsize=128 часто мало, а maxsize=None (то же самое, что functools.cache) заодно убирает накладные расходы на вытеснение.

Примеры

import functools
@functools.lru_cache
def sq(n):
    return n * n
print(sq(4))                        # → 16
print(sq(4), sq.cache_info().hits)  # → 16 1

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности