Python: анотації типів і mypy
Коротко: Анотації типів (type hints) записують у код Python очікувані типи параметрів, значень, що повертаються, і змінних. Python їх не нав’язує, але інструменти на кшталт mypy і редактори перевіряють їх.
Докладніше: Python лишається динамічно типізованим. Підказки служать людям та інструментам: краще автодоповнення, ранні повідомлення про помилки, читабельніші інтерфейси.
Подробиці
- Основна форма:
def price(net: float, tax: float = 0.19) -> float:іname: str = "Anna". - Контейнери:
list[int],dict[str, float],tuple[int, str],set[str](напряму з Python 3.9, ранішеtyping.Listтощо). - Optional і об’єднання:
str | None(з 3.10) абоOptional[str]. Каже: може бутиNone, тому перевіряйте перед використанням. - Ще:
Callable[ [int], str ]для функцій,TypedDictдля словників із фіксованими ключами,Protocolдля структурних інтерфейсів («качина типізація» з перевіркою),Anyяк лазівка. - mypy:
mypy file.pyстатично перевіряє підказки й повідомляє про суперечності, наприклад за передаванняstrзамістьint. Альтернативи: pyright (у Pylance), pytype. - Поступово: Можна анотувати окремі файли чи функції. Неанотований код обробляється поблажливо.
- Під час виконання: Бібліотеки на кшталт Pydantic чи FastAPI читають підказки й перевіряють вхідні дані.
- Межа: Підказки нічого не гарантують під час виконання.
Див. також: системи типів і виведення типів, лінтери, форматувальники та перевірка типів