Создать декоратор, который кэширует результаты функций.
Кэширующий декораторСоздать декоратор, который кэширует результаты функций, чтобы повторные вызовы с теми же аргументами не приводили к дополнительным вычислениям.
def cache_decorator(func):
cache = {}
def wrapper(*args):
if args in cache:
return cache[args] # Возвращаем сохраненный результат
result = func(*args) # Вызов функции, если результата нет в кэше
cache[args] = result # Сохраняем результат в кэше
return result
return wrapper
@cache_decorator
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
# Пример использования
print(factorial(5)) # Первый вызов с расчетом
print(factorial(5)) # Второй вызов, результат берется из кэша
Результат выполнения кодаПервый вызов: 120 Второй вызов: 120 Декоратор | |
|
| |
| Просмотров: 221 | |
| Всего комментариев: 0 | |