2921
Комментарий:
|
← Версия 3 от 2020-11-22 19:48:50 ⇥
3034
|
Удаления помечены так. | Добавления помечены так. |
Строка 5: | Строка 5: |
* "`Type of argument 'Имя' is not Тип`", если не совпадает тип именного параметра функции и соответствующий ему тип в `последовательности_типов`. Типы именованных параметров перечислены в конце `последовательности_типов` в порядке их описания в `def …` | * "`Type of argument 'Имя' is not Тип`", если не совпадает тип именного параметра функции и соответствующий ему тип в `последовательности_типов`. * Типы именованных параметров перечислены в конце `последовательности_типов` * Типы именованных параметров проверяются в порядке их появления при вызове функции |
Написать параметрический декоратор TypeCheck(последовательность_типов, тип_результата), который бросает исключение TypeError при вызове функции со следующим сообщением:
"Type of argument Номер is not Тип", если не совпадает тип позиционного параметра функции и соответствующий ему по порядку тип в последовательности_типов
"Type of argument 'Имя' is not Тип", если не совпадает тип именного параметра функции и соответствующий ему тип в последовательности_типов.
Типы именованных параметров перечислены в конце последовательности_типов
- Типы именованных параметров проверяются в порядке их появления при вызове функции
"Type of result is not Тип", если тип возвращённого функцией значения не совпадает с типом_результата
"Function функция must have число arguments" — если количество переданных функции параметров (включая переданные по умолчанию) не соответствует длине последовательности_типов
- Сначала проверяются параметры в порядке описания в функции, затем вызывается функция, после чего проеряется результат. Ислкючение возникает при первом несовпадении типа.
18 Type of argument 2 is not <class 'str'>
Еще примеры:
- →
1 >>> valid(3, "--", 10)
2 18
3 >>> valid(3, 7, 10)
4 …
5 TypeError: Type of argument 2 is not <class 'str'>
6 >>> valid(3, "--", "*")
7 …
8 TypeError: Type of argument 3 is not <class 'int'>
9 >>> valid(3, "--", c=1.23)
10 …
11 TypeError: Type of argument 'c' is not <class 'int'>
12 >>> semivalid(2, 2)
13 4
14 >>> semivalid(1, 2)
15 …
16 TypeError: Type of result is not <class 'int'>
17 >>> variable(1,2,3,4)
18 4
19 >>> variable(1,2,a=100, b=500)
20 4
21 >>> variable(1,2,a=100)
22 …
23 TypeError: Function variable must have 4 arguments
24