Back to questions
Лига Цифровой Экономики
Middle
4
Необходимо реализовать декоратор, который кэширует результат выполнения метода основываясь на его входных аргументах.
Companies where asked
Answer from AI
sobes.tech AI
Для реализации декоратора кэширования результата метода по входным аргументам в Python можно использовать словарь для хранения результатов. Вот пример простого декоратора:
def cache_decorator(func):
cache = {}
def wrapper(*args, **kwargs):
key = (args, tuple(sorted(kwargs.items())))
if key not in cache:
cache[key] = func(*args, **kwargs)
return cache[key]
return wrapper
# Пример использования
@cache_decorator
def compute(x, y):
print("Вычисляем...")
return x + y
print(compute(1, 2)) # Вычисляем... \n3
print(compute(1, 2)) # 3 (берётся из кэша, вычисление не повторяется)
Этот декоратор сохраняет результаты вызова функции с конкретными аргументами и возвращает кэшированный результат при повторных вызовах с теми же параметрами.