Напишите декоратор @takes, который будет проверять правильность типов входных аргументов функции, которая принимает лишь позиционные аргументы.
Декоратор принимает на вход типы аргументов и декорирует функцию таким образом, что если хотя бы один из аргументов имеет неверный тип, то декорированная функция не исполняется и выводится сообщение "ERROR!".
Если количество аргументов функции и количество переданных типов разное:
Декоратор должен вести себя порядочно, то есть не должен затирать основные аргументы функции (__name__, __doc__, __module__).
Примечание: условие про "лишь позиционные аргументы" добавлено для простоты, если хотите - попробуйте реализовать декоратор @takes и для аргументов с ключевыми словами.
@takes(int, str)
def f(a, b):
print(a, b)
f(1, '1') # Должно вывести 1 1
f(1, 1) # Должно вывести ERROR
Гарантия на работу | 1 год |
Средний балл | 4.96 |
Стоимость | Назначаете сами |
Эксперт | Выбираете сами |
Уникальность работы | от 70% |