В других языках что-либо подобное этому примеру вызывает ошибку типа. Почему не в Питоне?
>>> def foo(a:int) -> str:
return a+1
>>> foo(5)
6
В других языках что-либо подобное этому примеру вызывает ошибку типа. Почему не в Питоне?
>>> def foo(a:int) -> str:
return a+1
>>> foo(5)
6
Подсказка типов в Python — это дополнительное дополнение, помогающее статическому анализу кода и редакторам.
Из спецификации PEP 484 — Подсказки типов. :
Обратите внимание, что этот PEP по-прежнему явно НЕ предотвращает другое использование аннотаций, а также не требует (или запрещает) какую-либо конкретную обработку аннотаций, даже если они соответствуют этой спецификации. Это просто обеспечивает лучшую координацию, как это сделал PEP 333 для веб-фреймворков.
и
Хотя эти аннотации доступны во время выполнения через обычный атрибут
__annotations__
, во время выполнения проверка типов не выполняется. Вместо этого в предложении предполагается существование отдельной автономной программы проверки типов, которую пользователи могут добровольно запускать со своим исходным кодом. По сути, такая проверка типов действует как очень мощный линтер. (Хотя отдельные пользователи, конечно, могли бы использовать аналогичную программу проверки во время выполнения для принудительного применения Design By Contract или оптимизации JIT, эти инструменты еще не настолько зрелые.)
Обратите внимание, что подсказки типов — это совсем новое дополнение к Python, а PEP предназначен для помощи в координации, а не для принудительной проверки типов языка во время выполнения.
Python - это не язык со статической типизацией, он по-прежнему очень динамично типизирован. Вы можете спутать эту функцию с объявлениями типов в статически типизированных языках.
В будущем возможно, Python добавит поддержку строгого режима (аналогично тому, как Hack делает это), но сейчас это не обсуждается.