Выпуск Python 3.10
Python 3.10 (выпущен 4 октября 2021) стал одним из самых заметных релизов за последние годы, добавив новый синтаксис и значительно улучшив читаемость и типизацию.
Главная фича: Структурное сопоставление с шаблоном (match / case)
Самое крупное изменение — PEP 634–636, добавляющее pattern matching.
Это не просто аналог switch, а декларативный механизм сопоставления структур данных:
- Поддержка списков, словарей, классов и вложенных структур
- Возможность извлекать значения прямо в переменные
- Поддержка сложных шаблонов и условий (guards)
def get_season(month: str):
match month:
case 'Dec' | 'Jan' | 'Feb':
return 'Зима'
case _:
return 'Неизвестный сезон'
event = {"type": "click", "mouse": {"x": 100, "y": 200}}
match event:
case {"type": "click", "mouse": {"x": x, "y": y}}:
print(f"Клик по координатам {x}, {y}")
Pattern matching позволяет «распаковывать» структуру данных и выполнять действия в зависимости от формы данных ([Python documentation][1])
Улучшения языка и типизации
-
PEP 604: Более короткая запись union типов:
int | str -
PEP 612: ParamSpec для типизации функций
-
PEP 613: Явные type alias
-
PEP 647: User-defined type guards ([Python documentation][1])
Улучшения интерпретатора и отладки
-
PEP 626: Точные номера строк:
- Улучшает дебаггеры и coverage-инструменты
-
Улучшения traceback и диагностики
-
Более предсказуемое поведение выполнения ([Python documentation][1])
Стандартная библиотека
-
PEP 618: Проверка длины в
zip():zip(a, b, strict=True) -
Улучшения
typing,collections,contextlibи других модулей ([Python documentation][1])
Производительность
-
Быстрее:
str,bytes,bytearray(~30–40% в некоторых случаях)- доступ к атрибутам (~30–40%)
-
Улучшения загрузки модулей (
runpy) -
Общие оптимизации интерпретатора ([Python documentation][1])
Устаревшие и удалённые возможности
- PEP 632:
distutilsобъявлен устаревшим - PEP 644: Требуется OpenSSL 1.1.1+
- Удаление старых Unicode API (
Py_UNICODE) ([Python documentation][1])
История патчей (Subversions)
- 3.10.19 (Окт 2025) — финальные обновления безопасности
- 3.10.14 (Март 2024) — исправления CVE
- 3.10.9 (Дек 2022) — исправления безопасности в
urllib - 3.10.4 (Март 2022) — фиксы памяти и asyncio
- 3.10.0 (Окт 2021) — первоначальный релиз