Аннотации типов сами по себе ничего не делают для принудительного применения типов. Они готовят ваш код для оценки с помощью проверки типов, такой как Mypy, и позволяют программно читать аннотации функций для таких вещей, как более интеллектуальные декораторы.
Если по какой-то причине вы хотите начать применять типы без использования средства проверки типов, вы можете украсить свои функции. У меня есть один такой декоратор, доступный на github , который поддерживает Union[]
, Optional[]
и Any
в дополнение к стандартным аннотациям:
Использование:
from type_enforcer import enforce_types
@enforce_types
def foo(x: int, y: float) -> int:
return int(x * y)
>>> try:
>>> foo(5, 2.0)
>>> except TypeError as e:
>>> print(str(e))
10
>>> try:
>>> foo(5, 2)
>>> except TypeError as e:
>>> print(str(e))
Argument y supplied wrong type: expected float, got int.