Перейти к содержанию

Особенности создания обертки вокруг функции

Задание: Декоратор проверяющий тип возврата функции.

Python является как строго типизированным, так и динамически типизированным языком.

Строгая типизация означает, что переменные имеют тип и что тип имеет значение при выполнении операций над переменной. Динамическая типизация означает, что тип переменной определяется только во время выполнения.

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

Благодаря динамической типизации в Python одна и та же переменная может иметь разный тип в разное время выполнения. Динамическая типизация обеспечивает гибкость программирования, но за счет производительности.


В данном задании необходимо написать декоратор, который будет контролировать тип возврата функции.

  1. Реализуйте декоратор declare_return_type, который будет принимать в качестве аргумента ожидаемый тип возврата функции, к которой применен декоратор.
  2. Декоратор проверяет соответствует ли тип результата выполнения функции с указанным в декораторе типом. Если тип не соответствует, вызывается исключение WrongTypeError.
  3. При обращении к имени декорируемой функции (func.__name__) должно возвращаться имя декорируемой функции ('func').
  4. Следует учесть, что функция, которую декорируют может иметь различное количество позиционных и именных аргументов.
  5. Декорированная функция должна возвращать результат выполнения.

*Для проверки типа объекта в Python есть метод isinstance().


Загрузка тренажера...

Код для проверки Вашей реализации,

@declare_return_type(int)
def f(a, b):
    return a + b

def main(a, b):
    try:
        return f(a, b)
    except WrongTypeError as er:
        return er

Задание 2 Демо-версия

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

Загрузка тренажера...

Задание 3: Немного статистики


Стандартное отклонение - одна из самых распространенных мер рассеивания в статистике. Чем сильнее отличаются значения в выборке (множестве чисел), тем больше стандартное отклонение.

Но не пугайтесь, в этом задании вам всего лишь нужно проанализировать функции и расставить декораторы в правильном порядке. Функция func возвращает числа. Мы хотим, чтобы вместо этого она каждый раз возвращала среднее арифметическое и стандартное отклонение совокупности этих чисел. Для этого нам понадобится:

  1. Заносить каждое новое возвращаемое значение в список. Он будет нашей выборкой.
  2. Посчитать дисперсию выборки
  3. Вычислить стандартное отклонение из дисперсии.
Загрузка тренажера...