Код возвращает 6 из-за того, что функция
func складывает три аргумента:
a,
b и
c. Давайте разберем, что происходит в коде более подробно.
1. Функция
func:
def func(a: 'spam', b: (1, 10), c: float) -> int:
-
a: 'spam': Это аннотация для параметра
a. Текст
'spam' здесь не имеет особого значения в самом коде, скорее всего, это просто строка, которая может использоваться для документации или информации о том, какой тип ожидался. В действительности, это просто строка, и Python не проводит никаких проверок типов на основе этой аннотации.
-
b: (1, 10): Это также аннотация, которая указывает, что
b должен быть значением, соответствующим кортежу
(1, 10). Однако, как и в случае с аннотацией для
a, эта информация не проверяется в самом коде.
-
c: float: Это аннотация, указывающая, что параметр
c должен быть типа
float.
-
-> int: Это аннотация, которая указывает, что функция будет возвращать значение типа
int.
2. Сложение аргументов:
Когда вы вызываете
func(1,2,3), переданная строка
1,
2 и
3 становятся значениями
a,
b и
c соответственно. То есть:
-
a = 1 -
b = 2 -
c = 3>>> func.__annotations__
... {'с': class 'float’>, ’b’: (1, 10), 'a': 'spam', 'return': <class ’int’>}