Создать декоратор, который кэширует результаты функций.
Кэширующий декораторСоздать декоратор, который кэширует результаты функций, чтобы повторные вызовы с теми же аргументами не приводили к дополнительным вычислениям. 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 Декоратор | |
| |
Просмотров: 26 | |
Всего комментариев: 0 | |