Mediumtyping
Что такое typing模块 (List, Dict, Optional)?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
typing — модуль с type constructs для аннотаций. Эффективен с mypy/pyright для статического анализа.
from typing import Optional, Union, Callable, TypeVar, Generic, Literal, TypedDict
# С Python 3.9 можно использовать builtins как generics
def first(items: list[int]) -> int: ...
scores: dict[str, int] = {}
# Optional/Union (в 3.10+ — int | None, int | str)
def find(key: str) -> Optional[int]: ...
# TypeVar — generic параметр
T = TypeVar('T')
def first(items: list[T]) -> T: ...
# Callable
handler: Callable[[int], str] = lambda x: str(x)
# Literal — конкретное значение
mode: Literal['r', 'w', 'a'] = 'r'
# TypedDict — dict с фиксированными ключами
class UserDict(TypedDict):
name: str
age: intProtocol— structural typing (duck typing для mypy);cast(T, x)— runtime no-op для type checker;@overload— multiple signatures;reveal_type(x)— debug в mypy.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.