Найти тему
Заметки по Python

Основы Python. Часть 15

Оглавление

Задача 1. Права доступа

На вас возложили задачу по созданию и поддержке специализированного сайта-форума. Вы только начали выполнять задачу и сейчас остановились на реализации действий, которые могут совершать посетители форума. И конечно же, для разных пользователей прописаны разные возможности.

Напишите декоратор check_permission, который проверяет, есть ли у пользователя доступ к вызываемой функции, и если нет, то выдаёт исключение PermissionError.

Задача 2. Функция обратного вызова

При работе с сетью и веб-сервисами иногда используется функция callback, так называемая функция обратного вызова. Это функция, которая вызывается при срабатывании определённого события (переходе на страницу, получении сообщения или окончании обработки процессором). В неё можно передать функцию, чтобы она выполнилась после определённого события. Это используется, например, в HTTP-серверах в ответ на URL-запросы. Реализуйте такую функцию.

-2

Задача 3. Логирование в формате

Реализуйте декоратор, который будет логировать все методы декорируемого класса (кроме магических методов) и в который можно передавать формат вывода даты и времени логирования.

-3

Задача 4. Весь мир — декоратор…

Реализуйте декоратор для декораторов: он должен декорировать другую функцию, которая должна быть декоратором, и даёт возможность любому декоратору принимать произвольные аргументы.

-4

Задача 5. Синглтон

Синглтон — это порождающий паттерн проектирования, который гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа. Синглтонами мы уже пользовались, к ним относятся, например, None, True и False. Именно потому, что None является синглтоном, мы можем использовать оператор is — он возвращает True только для объектов, представляющих одну и ту же сущность.

Реализуйте декоратор singleton, который превращает класс в одноэлементный. То есть при множественной инициализации объекта этого класса будет сохранён только первый инстанс, а все остальные попытки создания будут возвращать первый экземпляр.

-5

Задача 6. Класс-декоратор

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

Задача

Создайте декоратор, который логирует аргументы, результаты и время выполнения функции. Реализуйте декоратор как класс и примените его к функции complex_algorithm. Запустите задекорированную функцию и проверьте время её выполнения.

-6