Back to questions
Junior — Middle
73
Как реализовать функцию-декоратор, которая сохраняет результат выполнения другой функции для повторных вызовов с одинаковыми аргументами?
Answer from 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)) # Вычисляется один раз, затем результат берется из кэша
Такой декоратор сохраняет результаты вызовов функции с определёнными аргументами и возвращает сохранённый результат при повторных вызовах, что повышает эффективность.