Две фичи в новой версии Python
На 1 октября 2026 запланирован релиз Python 3.15. Стоп на изменения произошел достаточно давно, поэтому все новинки уже известны. Сообщество ждет ленивые импорты, новые типы данных frozendict и sentinel, встроенный семплирующий профилировщик Tachyon и прочие штуки. Отдельно подчеркну механику с распаковкой list comprehensions на месте — этого действительно порой не хватало.
И все же есть пара новых моментов, о которых не говорят громко, но они меняют правила игры и могут оказаться весьма полезными.
I. Парсинг JSON в frozendict Сигнатуры функций load и loads из встроенной библиотеки json позволяют проводить десериализацию JSON-строк прямо в frozendict, без дополнительных преобразований в коде. Связка аргументов array_hook=tuple и object_hook=frozendict сделают всю работу. Теперь на выходе — неизменяемый словарь.
II. Исправление контекстных менеджеров Контекстные менеджеры можно использовать в качестве декораторов. Если обернуть функцию-генератор foo в @contextmanager, а затем использовать ее как @foo над другой функцией, то это сработает. Но только не с корутинами и генераторами. А начиная с новой версии — и с ними тоже. Смотрите скриншот для понимания контекста. Результат выполнения этого кода на Python до версии 3.15 будет довольно неожиданным.
Конечно, эти изменения не так значительны, как включение в стандартную библиотеку нового профилировщика кода, а потому менее заметны. И все же могут пригодиться.