typing — Поддержка аннотаций типов

from typing import List, Dict, Optional, Union, Callable

Базовые аннотации

name: str = "Алиса"
age: int = 30

def greet(name: str) -> str:
    return f"Привет, {name}!"

Коллекции

# Python 3.9+
names: list[str] = ["Алиса", "Боб"]
scores: dict[str, int] = {"Алиса": 95}
coords: tuple[float, float] = (3.14, 2.71)

Optional и Union

from typing import Optional, Union

def find_user(user_id: int) -> Optional[str]:
    return "Алиса" if user_id == 1 else None

# Python 3.10+
def process(value: str | int) -> str:
    return str(value)

Callable

from typing import Callable

def apply(func: Callable[[int, int], int], a: int, b: int) -> int:
    return func(a, b)

TypedDict

from typing import TypedDict

class UserDict(TypedDict):
    name: str
    age: int

Важно

Официальная документация

typing — Support for type hints

Полный справочник API (API Reference)

Базовые типы

Тип Описание
typing.Any Любой тип (отключает проверку статического анализатора).
typing.Callable Исполняемый объект (функция). Callable[[int], str] принимает int, возвращает str.
typing.Union Объединение типов. Union[int, str] (эквивалент `int
typing.Optional Опциональный тип, допускающий None. Эквивалент Union[Тип, None].
typing.Dict Словарь, например Dict[str, int]. (Начиная с Python 3.9 используется просто dict).
typing.List Список, например List[int]. (Начиная с Python 3.9 используется просто list).

Специальные конструкции

Конструкция Описание
typing.Literal Позволяет указать точные конкретные значения, которые может принимать переменная, например Literal['start', 'stop'].
typing.Final Указывает, что значение этой переменной (константы) нельзя перезаписывать.