Создать декоратор, который кэширует результаты функций.

Кэширующий декоратор

Создать декоратор, который кэширует результаты функций, чтобы повторные вызовы с теми же аргументами не приводили к дополнительным вычислениям.

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

Декоратор cache_decorator сохраняет результаты функций и использует их при повторных вызовах с теми же аргументами, что снижает время выполнения и вычислительную нагрузку при повторных операциях.

Категория: Практические упражнения Python | Добавил: Admin (03.05.2024)
Просмотров: 27 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: