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, коли значення повертається з функції. Введення тексту допомагає зробити ваш код більш чистим. Замість документування коду за допомогою коментарів, де ви вказуєте типи в docstring, ви можете використовувати типи без будь-якої вартості продуктивності.
Clean 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