Что важно знать
- Аннотации не проверяются при выполнении — их проверяет анализатор.
X | None,list[int],TypedDict,Literal.Protocol— структурная типизация.
Type hints, дженерики и Protocol, проверка mypy и pyright.
X | None, list[int], TypedDict, Literal.Protocol — структурная типизация.Практика. Аннотировать учебный проект и добиться прохождения mypy в строгом режиме.
Практика. Описать интерфейс репозитория через Protocol и сделать две реализации с проверкой типов.
Войдите, чтобы пройти тест: сданный тест отмечает тему пройденной на карте и в ИПР.
Аннотации — подсказки о типах для людей и инструментов; интерпретатор их не проверяет.
Полный разборTypeVar — параметр типа: функция first(xs: list[T]) -> T сохраняет связь «что пришло, то и вернулось». Generic — обобщённый класс. С Python 3.12 — новый синтаксис: def first[T](xs: list[T]) -> T и class Box[T]. Проверяют их mypy и pyright, интерпретатор…
Полный разборКоллекции: list[int], dict[str, float], set[str], tuple[int, str] (фиксированный) и tuple[int, ...] (любой длины) — встроенные типы в скобках с Python 3.9. Необязательное значение — int | None (3.10+, раньше Optional[int]). Объединение — int | str. Функция …
Полный разборmypy и pyright — статические анализаторы: читают код и аннотации без запуска и находят несоответствия типов (передали str вместо int, забыли проверить None, вызвали несуществующий метод). Ставят как зависимость разработки, настраивают в pyproject.toml и…
Полный разборPydantic проверяет и преобразует данные во время выполнения по аннотациям класса-наследника BaseModel: строку «42» превратит в int, а «abc» для int отклонит с понятной ошибкой ValidationError, где указано поле и причина. Ограничения задают через Field…
Полный разбор@dataclass генерирует __init__, __repr__, __eq__ (опционально порядок, хеш, слоты) по аннотированным полям — обычный изменяемый класс без проверки типов. namedtuple — неизменяемый кортеж с именами полей, индексируется и распаковывается. Pydantic — валидация и…
Полный разборABC — номинальная типизация: класс должен явно наследовать абстрактный класс, а нереализованные @abstractmethod не дадут создать экземпляр. Protocol (3.8) — структурная: подходит любой класс с нужными методами без наследования, проверку делает mypy или…
Полный разборЧто дают аннотации и кто их проверяет, как аннотировать коллекции, Optional и объединения, обобщённые типы, mypy в проекте, проверка данных Pydantic.
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.