Python: декоратор мемоизации на примере Фибоначчи

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

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

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

Условие

Написать код для функции cache. Это декоратор, который должен

запоминать, что вернула декорированная функция, и возвращать запомненное

значение при повторном вызове с одинаковыми аргументами.

Можно считать, что все аргументы хешируемые.

Использовать только стандартную библиотеку Python.

Ответ

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

Пример простого декоратора:

def memoize(func):
    cache = {}
    def wrapper(*args):
        if args in cache:
            return cache[args]
        result = func(*args)
        cache[args] = result
        return result
    return wrapper

@memoize
def fibonacci(n):
    if n < 2:
        return n
    return fibonacci(n-1) + fibonacci(n-2)

print(fibonacci(10))  # Вычисляется один раз, затем результат берется из кэша

Такой декоратор сохраняет результаты вызовов функции с определёнными аргументами и возвращает сохранённый результат при повторных вызовах, что повышает эффективность.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее