1.7 KiB
1.7 KiB
Задача 6. Декораторы и время выполнения (Декораторы, Функции высшего порядка)
Напишите программу с декораторами для измерения производительности:
-
timer(func)— декоратор, который измеряет время выполнения функции. Выводит: "Функция {название} выполнилась за {время} секунд". Используйтеtime.time(). -
repeat(n)— декоратор с параметром, который запускает функциюnраз подряд и возвращает список результатов. -
cache_result(func)— декоратор, который кэширует результат функции. Если функция вызывается с теми же аргументами, возвращает закэшированный результат, не выполняя функцию повторно. Используйте словарь для хранения кэша.
Тесты:
- Создайте функцию
slow_calculation(x), которая делаетtime.sleep(1)и возвращаетx * 2 - Примените к ней декоратор
@timer - Создайте функцию
fibonacci(n)(рекурсивная) и примените@cache_result - Вызовите
fibonacci(35)дважды и убедитесь, что второй раз выполняется мгновенно - Создайте функцию с декоратором
@repeat(3)и проверьте, что она выполнилась 3 раза