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

18 lines
1.7 KiB
Markdown

### Задача 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 раза