Версия Python 3.12 будет поддерживаться следующие полтора года, а потом ещё три с половиной года разработчики будут публиковать для неё обновления безопасности. Кроме того, уже запустили тестовую ветку Python 3.13.
Что нового?
В версии 3.12 значительно улучшили работу f‑строк и сделали их более гибкими. Теперь внутри них можно использовать любые конструкции, поддерживаемые в Python. К примеру, обратные слеши, комментарии и многострочные выражения больше не приводят к возникновению ошибок. Ещё внутри строки можно использовать те же кавычки, что и для обрамления самой строки.
print(f"This is the playlist: {"\n".join(songs)}")
print(f"This is the playlist: {"\N{BLACK HEART SUIT}".join(songs)}")
print(f"This is the playlist: {", ".join([
... 'Take me back to Eden', # My, my, those eyes like fire
... 'Alkaline', # Not acid nor alkaline
... 'Ascensionism' # Take to the broken skies at last
... ])}")
Информация об ошибках стала более информативной, и теперь в ней уделяется внимание и опечаткам. Python не просто указывает на проблемное место в коде, а предлагает варианты для исправления. Кроме того, если забыть подключить модуль или библиотеку, то система подскажет, как это можно сделать.
sys.version_info
NameError: name 'sys' is not defined. Did you forget to import 'sys'?
somethin = blech
NameError: name 'blech' is not defined. Did you mean: 'self.blech'?
import a.y.z from b.y.z
SyntaxError: Did you mean to use 'from ... import ...' instead?
Типы обобщённых классов и функций можно аннотировать более компактным способом. Это должно сэкономить время разработчикам и повысить общую читаемость кода.
def max[T](args: Iterable[T]) -> T:
...
class list[T]:
def __getitem__(self, index: int, /) -> T:
...
def append(self, element: T) -> None:
Производительность
В выпуске Python 3.12 удалось добиться прироста производительности в размере 5%. Показатели маленькие, но команда проекта продолжает работать над этим. В этом обновлении ускорить Python получилось благодаря добавлению поддержки бинарного оптимизатора BOLT. Вместе с этим ускорили работу с регулярными выражениями и другими встроенными функциями.
Другие нововведения:
- в рамках улучшения безопасности разработчики перешли на формально верифицированные реализации алгоритмов SHA1, SHA3, SHA2-384, SHA2-512 и MD5 в hashlib;
- расширена поддержка Windows в модуле os;
- в CPython появилась поддержка защиты от переполнения стека;
- удалены устаревшие и неактуальные модули и встроенные библиотеки.
Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!