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