Python 3.X (только) также обобщает определение функции, позволяя аннотировать аргументы и возвращаемые значения значениями объекта
для использования в расширениях. .
Его META-данные, чтобы объяснить, чтобы быть более явным о значениях функции.
Аннотации кодируются как :value
после имени аргумента и перед значением по умолчанию, так и как->value
после списка аргументов.
Они собраны в __annotations__
атрибут функции, но сами Python не рассматривают их как особые:
>>> def f(a:99, b:'spam'=None) -> float:
... print(a, b)
...
>>> f(88)
88 None
>>> f.__annotations__
{'a': 99, 'b': 'spam', 'return': <class 'float'>}
Источник: Python Pocket Reference, пятое издание
ПРИМЕР:
typeannotations
Модуль предоставляет набор инструментов для проверки типа и типа вывода кода Python. Он также предоставляет набор типов, полезных для аннотирования функций и объектов.
Эти инструменты в основном предназначены для использования статическими анализаторами, такими как линтеры, библиотеки автозавершения кода и IDE. Кроме того, предоставляются декораторы для проверки во время выполнения. Проверка типов во время выполнения не всегда хорошая идея в Python, но в некоторых случаях она может быть очень полезной.
https://github.com/ceronman/typeannotations
Как набор текста помогает писать лучший код
Набор текста может помочь вам выполнить статический анализ кода для выявления ошибок типа перед отправкой кода в производство и предотвратить некоторые очевидные ошибки. Существуют такие инструменты, как mypy, которые вы можете добавить в свой набор инструментов как часть жизненного цикла вашего программного обеспечения. mypy может проверить правильность типов, частично или полностью запустив вашу кодовую базу. mypy также помогает вам обнаруживать ошибки, такие как проверка типа None, когда значение возвращается из функции. Набор текста помогает сделать ваш код чище. Вместо документирования кода с помощью комментариев, где вы указываете типы в строке документации, вы можете использовать типы без каких-либо затрат на производительность.
Чистый Python: элегантное кодирование на Python ISBN: ISBN-13 (pbk): 978-1-4842-4877-5
PEP 526 - Синтаксис для переменных аннотаций
https://www.python.org/dev/peps/pep-0526/
https://www.attrs.org/en/stable/types.html