Функция обратного вызова

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

Права доступа

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

Кэширование запросов

Контекст Вы разрабатываете программу для кэширования запросов к внешнему API. Часто повторяющиеся запросы занимают много времени, поэтому вы решаете создать класс LRU Cache (Least Recently Used Cache), который будет хранить ограниченное количество запросов и автоматически удалять самые старые при достижении лимита. Это позволит значительно ускорить повторяющиеся запросы, так как данные будут браться из кэша, а не отправляться повторно. Задача Советы Не забывайте … Читать далее

Дата

Что нужно сделать Реализуйте класс Date, который должен: Оба метода должны получать на вход строку вида dd-mm-yyyy. При тестировании программы объект класса Date должен инициализироваться исключительно через метод конвертации, например: Неверный вариант: date = Date(10, 12, 2077) Пример основного кода: Результат: Что оценивается

Математический модуль

Что нужно сделать Ирина использует в своей программе очень много различных математических вычислений, связанных с фигурами. Например, нахождение их площадей или периметров. Поэтому, чтобы не захламлять код огромным количеством функций, она решила выделить для них отдельный класс, подключить как модуль и использовать по аналогии с модулем math. Реализуйте класс MyMath, состоящий как минимум из следующих методов (можете бонусом добавить и другие методы): Пример основного кода: Результат: … Читать далее

Кэширование для ускорения вычислений

Контекст Вы разрабатываете программу для оптимизации вычислений чисел Фибоначчи. Числа Фибоначчи вычисляются рекурсивной функцией, каждое число равно сумме двух предыдущих чисел. Однако вы заметили, что при больших значениях чисел Фибоначчи вычисления занимают значительное время, так как многие значения вычисляются повторно. Вам поручено создать декоратор, который кэширует результаты вызова функции и позволяет избежать повторных вычислений для одних и тех же аргументов. Задача Создайте … Читать далее

Счётчик

Что нужно сделать Реализуйте декоратор counter, считающий и выводящий количество вызовов декорируемой функции. Для решения задачи нельзя использовать операторы global и nonlocal (об этом мы ещё расскажем). Что оценивается

Логирование

Что нужно сделать Реализуйте декоратор logging, который будет отвечать за логирование функций. На экран выводится название функции и её документация. Если во время выполнения декорируемой функции возникла ошибка, то в файл function_errors.log записываются названия функции и ошибки. Также постарайтесь сделать так, чтобы программа не завершалась после обнаружения первой же ошибки, а обрабатывала все декорируемые функции и сразу записывала все ошибки в файл. Дополнительно: запишите дату … Читать далее

Замедление кода

Что нужно сделать В программировании иногда возникает ситуация, когда работу функции нужно замедлить. Типичный пример — функция, которая постоянно проверяет, изменились ли данные на веб-странице или её код. Реализуйте декоратор, который перед выполнением декорируемой функции ждёт несколько секунд. Что оценивается