Особенности создания обертки вокруг функции
Задание: Декоратор проверяющий тип возврата функции.
Python является как строго типизированным, так и динамически типизированным языком.
Строгая типизация означает, что переменные имеют тип и что тип имеет значение при выполнении операций над переменной. Динамическая типизация означает, что тип переменной определяется только во время выполнения.
Из-за строгой типизации типы должны быть совместимы в отношении операнда при выполнении операций. Например, Python позволяет добавлять целое число и число с плавающей запятой, но добавление целого числа к строке приводит к ошибке.
Благодаря динамической типизации в Python одна и та же переменная может иметь разный тип в разное время выполнения. Динамическая типизация обеспечивает гибкость программирования, но за счет производительности.
В данном задании необходимо написать декоратор, который будет контролировать тип возврата функции.
- Реализуйте декоратор declare_return_type, который будет принимать в качестве аргумента ожидаемый тип возврата функции, к которой применен декоратор.
- Декоратор проверяет соответствует ли тип результата выполнения функции с указанным в декораторе типом. Если тип не соответствует, вызывается исключение WrongTypeError.
- При обращении к имени декорируемой функции (func.__name__) должно возвращаться имя декорируемой функции ('func').
- Следует учесть, что функция, которую декорируют может иметь различное количество позиционных и именных аргументов.
- Декорированная функция должна возвращать результат выполнения.
*Для проверки типа объекта в 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 возвращает числа. Мы хотим, чтобы вместо этого она каждый раз возвращала среднее арифметическое и стандартное отклонение совокупности этих чисел. Для этого нам понадобится:
- Заносить каждое новое возвращаемое значение в список. Он будет нашей выборкой.
- Посчитать дисперсию выборки
- Вычислить стандартное отклонение из дисперсии.