Задания для самостоятельного выполнения

Сложность:
Rare
  1. Решите обе задачи своего варианта.
  2. Примените декоратор к замыканию.
  3. Оформите отчёт в README.md. Отчёт должен содержать:
    • Условия задач
    • Описание проделанной работы
    • Скриншоты результатов
    • Ссылки на используемые материалы

Сложность:
Medium
  • Создайте декоратор с опциональным параметром. Подумайте о поддержке рекурсивных функций.

Сложность:
Well-done
  • Реализуйте декоратор классов вместо декоратора функций

Варианты заданий

    • Замыкание-калькулятор, накапливающее результат и поддерживающее 4 арифметичесике операции:
      >>> calc = make_calc("*", initial=1)
      >>> calc(5)
      5
      >>> calc(2)
      10
      
    • Декоратор, который будет запускать функцию указанное число раз с указанными параметрами и возвращать последвательность результатов.
    • Замыкание для получение текста ответа на запрос к API, например https://dogapi.dog/api/v2/facts.
    • Декоратор, ограничивающий частоту вызовов функций.
    • Замыкание для получения очередной строки из файла.
    • Декоратор, который будет логировать вызовы функций.
    • Замыкание, отбирающее только уникальные значения из переданных.
    • Декоратор, который будет ограничивать количество вызовов функций.
    • Замыкание, определяющее нахождение аргуметов в допустимых диапазонах.
    • Декоратор, который будет оборачивать каждую функцию в try блок для обработки ошибок.
    • Замыкание реализующее последовательность Фибоначчи.
    • Декоратор для кэширования результатов выполнения функций.
    • Замыкание для отслеживания количества HP героя - HP не может подниматься больше 100 и опускаться ниже 0, герой может лечиться или получать урон.
    • Декоратор для подавления вывода функции на консоль.
    • Замыкание для поиска среднего в аргументах.
    • Декоратор для проверки аргументов функции на тип и диапазон значений.
    • Замыкание для записи всех значений в файл.
    • Декоратор для асинхронного выполнения функции.
    • Замыкание для накопления всех аргументов в коллекции, при получении определённого значения - возврат и очистка коллекции.
    • Декоратор для валидации аргументов функции с помощью условий:
      @validate(lambda x: x > 0, lambda y: isinstance(y, str))
      def my_function(x, y):
          pass
      
    • Замыкание для получения n байтов из заданного источника.
    • Декоратор для отслеживания использования памяти функциями.
    • Замыкание для получения простых чисел.
    • Декоратор, не позволяющий функции выполняться больше определённого времени.