Модуль typing предоставляет продвинутые конструкции для аннотаций типов, которые позволяют выполнять статическую проверку типов и улучшают читаемость и поддерживаемость кода.
Они повторяют встроенные типы, но поддерживают параметризацию через дженерики:
List — типизированный список, например List[int]Dict — типизированный словарь, например Dict[str, int]Tuple — типизированный кортеж, например Tuple[int, str]Примечание: начиная с Python 3.9+, можно использовать встроенные типы напрямую, например list[int].
Используются для выражения опциональных или множественных допустимых типов:
Optional[X] — эквивалент Union[X, None]Union[X, Y] — принимает либо тип X, либо тип YAny — отключает проверку типов для значенияLiteral[X] — ограничивает значение конкретными литеральными значениямиCallable[[int, str], bool] — определяет сигнатуры функций с типами входных параметров и возвращаемого значенияProtocol — включает структурную типизацию (duck typing с проверкой типов)TypeVar
Generic
TypeVar — объявляет переменную типа для переиспользуемых обобщённых функций или классовGeneric[T] — базовый класс для создания обобщённых классовTypeAlias — явно объявляет псевдоним типа для лучшей читаемостиAnnotated[X, metadata] — прикрепляет дополнительные метаданные к аннотации типа, полезно для фреймворков валидацииВместе эти конструкции позволяют писать выразительный, самодокументирующийся код, который поддерживает инструменты статического анализа вроде mypy и pyright, перехватывая ошибки типов до запуска программы.
List[int] из модуля typing и встроенный list[int] в Python 3.9+ функционально эквивалентны для целей type hinting.
Новый — ещё не проверен сообществом
Вы