Аннотации типов (подсказки типов) — это механизм в Python, позволяющий явно указывать ожидаемые типы данных для переменных, параметров функций и возвращаемых значений. Они были введены в PEP 484 и помогают улучшить читаемость кода, упростить его поддержку и интегрироваться со средствами статической проверки типов (например, mypy
).
Аннотации добавляются через двоеточие (:
) для переменных и стрелку (->
) для возвращаемого значения функции.
def greet(name: str) -> str:
return f"Hello, {name}"
age: int = 25
mypy
или pyright
могут находить ошибки до запуска кода.Используются встроенные типы (str
, int
, list
и т.д.) и специальные конструкции из модуля typing
:
from typing import List, Dict, Optional
def process_data(data: List[int]) -> Dict[str, Optional[int]]:
return {"result": data[0] if data else None}
Union[T, None]
.from typing import Union, Optional, Generic, TypeVar
T = TypeVar('T')
class Box(Generic[T]):
def __init__(self, item: T):
self.item = item
def parse_input(value: Union[str, int]) -> Optional[bool]:
if isinstance(value, str):
return value.lower() == "true"
return None
Можно аннотировать атрибуты класса и методы:
class User:
def __init__(self, name: str, age: int):
self.name = name
self.age = age
def get_info(self) -> str:
return f"{self.name} ({self.age})"
Аннотации типов — это мощный инструмент для:
Пример с подсветкой (как в VSCode):
from typing import Iterable
def calculate_average(numbers: Iterable[float]) -> float:
return sum(numbers) / len(numbers) if numbers else 0.0