Python 3.9+Аннотации и typingпонятие
int / str / list / dict (аннотации)
встроенные
С Python 3.9+ встроенные типы используются как обобщения напрямую: list[int], dict[str, int]. Ранее нужен был typing.List, typing.Dict.
Синтаксис
x: int = 5
s: str = 'hi'
items: list[int] = [1, 2, 3]
mapping: dict[str, int] = {'a': 1}
Интерпретатор аннотации не проверяет: функция, объявленная как принимающая list[int], без единого возражения примет список строк — расхождение найдёт только mypy или похожий анализатор. Тип указывается один на весь контейнер, поэтому для разнородных данных берут union или tuple с фиксированными типами по позициям. typing.List и typing.Dict формально устарели с 3.9 и живут только ради совместимости со старым кодом.
Примеры
def greet(name: str) -> str:
return f'Hello, {name}!'
print(greet('Alice')) # → Hello, Alice!
def total(nums: list[int]) -> int:
return sum(nums)
print(total([1, 2, 3])) # → 6
coords: tuple[float, float] = (1.0, 2.0) # → аннотация кортежа
matrix: list[list[int]] = [[1, 2], [3, 4]] # → вложенные типы
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности