В 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)) # Вычисляется один раз, затем результат берется из кэша
Такой декоратор сохраняет результаты вызовов функции с определёнными аргументами и возвращает сохранённый результат при повторных вызовах, что повышает эффективность.