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