Files
Dmitry Belan ee235ece10
CI Check / lint-and-check (push) Failing after 9s
feat: implement legacy shop management system and add task documentation files
2026-07-18 12:25:32 +03:00

1.7 KiB

Задача 6. Декораторы и время выполнения (Декораторы, Функции высшего порядка)

Напишите программу с декораторами для измерения производительности:

  1. timer(func) — декоратор, который измеряет время выполнения функции. Выводит: "Функция {название} выполнилась за {время} секунд". Используйте time.time().

  2. repeat(n) — декоратор с параметром, который запускает функцию n раз подряд и возвращает список результатов.

  3. cache_result(func) — декоратор, который кэширует результат функции. Если функция вызывается с теми же аргументами, возвращает закэшированный результат, не выполняя функцию повторно. Используйте словарь для хранения кэша.

Тесты:

  1. Создайте функцию slow_calculation(x), которая делает time.sleep(1) и возвращает x * 2
  2. Примените к ней декоратор @timer
  3. Создайте функцию fibonacci(n) (рекурсивная) и примените @cache_result
  4. Вызовите fibonacci(35) дважды и убедитесь, что второй раз выполняется мгновенно
  5. Создайте функцию с декоратором @repeat(3) и проверьте, что она выполнилась 3 раза