Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: cache, decorator

Как реализовать кэширование результатов функции с помощью декоратора?

Вопрос проверяет понимание декораторов, словарей и концепции мемоизации.

Короткий ответ

Кэширование можно реализовать с помощью декоратора, который сохраняет результаты функции в словаре. При повторном вызове с теми же аргументами возвращается сохранённый результат. Это ускоряет функции, которые часто вызываются с одинаковыми параметрами. В Python также есть готовое решение functools.lru_cache.

Длинный ответ

Кэширование (мемоизация) — это техника, при которой результат функции сохраняется и повторно используется.

Простейшая реализация декоратора

Идея:

  1. Создать словарь для хранения результатов.

  2. Проверять, есть ли результат в словаре.

  3. Если есть — вернуть его.

  4. Если нет — вычислить и сохранить.

Пример:

def cache_decorator(func):
    cache = {}

    def wrapper(*args):
        if args in cache:
            return cache[args]

        result = func(*args)
        cache[args] = result
        return result

    return wrapper

Использование:

@cache_decorator
def slow_function(x):
    # имитация тяжёлого вычисления
    return x * x

Готовое решение в стандартной библиотеке

Python предоставляет:

from functools import lru_cache

@lru_cache(maxsize=128)
def fib(n):
    if n < 2:
        return n
    return fib(n-1) + fib(n-2)

Когда это полезно

Кэширование эффективно:

  • при дорогих вычислениях

  • при повторяющихся аргументах

  • при детерминированных функциях

Не подходит:

  • если результат зависит от внешнего состояния

  • если аргументы часто уникальны

Вывод

Кэширование через декораторы — простой способ ускорить вычисления. В большинстве случаев лучше использовать functools.lru_cache, так как он реализован эффективно и поддерживает управление размером кэша.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • Python

    Python

Ключевые слова

#cache

#decorator

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.