Вышел Python 3.10.1 — добавились полезные фичи
2026-02-21 09:14 Diff

Любитель научной фантастики и технологического прогресса. Хорошо сочетает в себе заумного технаря и утончённого гуманитария. Пишет про IT и радуется этому.

В новой версии разработчики языка добавили параметризованные диспетчеры контекста. Они позволяют форматировать длинные коллекции диспетчеров контекста в несколько строк. Ранее это можно было реализовать через import выражения. Теперь доступен следующий синтаксис:

with (CtxManager() as example): ... with ( CtxManager1(), CtxManager2() ): ... with (CtxManager1() as example, CtxManager2()): ... with (CtxManager1(), CtxManager2() as example): ... with ( CtxManager1() as example1, CtxManager2() as example2 ): ...

Сообщения об ошибках стали умнее. Улучшили SyntaxErrors, IndentationErrors, AttributeErrors и NameErrors. Они выводят более точное описание проблемы. Например, в прошлых версиях Python SyntaxError для следующего кода возникло бы такое сообщение об ошибке:

expected = {9: 1, 18: 2, 19: 2, 27: 3, 28: 3, 29: 3, 36: 4, 37: 4, 38: 4, 39: 4, 45: 5, 46: 5, 47: 5, 48: 5, 49: 5, 54: 6, some_other_code = foo()File "example.py", line 3 some_other_code = foo() ^ SyntaxError: invalid syntax

А в версии 3.10 интерпретатор выдаёт такую ошибку:

File "example.py", line 1 expected = {9: 1, 18: 2, 19: 2, 27: 3, 28: 3, 29: 3, 36: 4, 37: 4, ^ SyntaxError: '{' was never closed

Дебагер стал более точным и надёжным. Стандарт PEP 626 добавил в Python номера строк для отладки, профилирования и мониторящих инструментов.

PEP 634 привнёс структурное соответствие шаблонов. Это позволяет вытаскивать информацию из сложных типов данных и выполнять действия для определённых форматов. Синтаксис состоит из match/case-выражения:

match subject: case <pattern_1>: <action_1> case <pattern_2>: <action_2> case <pattern_3>: <action_3> case _: <action_wildcard>

PEP 604 добавил новый оператор — объединение типов. Он используется для выражений «либо тип X, либо Y» и заменяет typing.Union. Например, ниже представлены старая и новая версии:

def square(number: Union[int, float]) -> Union[int, float]: return number ** 2def square(number: int | float) -> int | float: return number ** 2

PEP 613 ввёл TypeAlias. Он позволяет объявлять псевдонимы для типов более явно:

StrCache: TypeAlias = 'Cache[str]' # a type alias LOG_PREFIX = 'LOG[DEBUG]' # a module constant

Подробное описание всех изменений можно прочитать на официальном сайте Python.

Вот как на это отреагировали пользователи Reddit:

«Оператор объединения типов — отвал башки».

Скриншот: Reddit

«Я думал, что выйдет Python 4. Теперь, получается, нужно ждать ещё несколько лет».

Скриншот: Reddit

«А Я ВСЁ ЕЩЁ УЧУ PYTHON 3.9!!!»

Скриншот: Reddit
Бесплатный курс по Python ➞
Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу