Код
#новости

Вышел Python 3.12: расширенные f‑строки и информативные сообщения об ошибках

Спустя год разработки команда выпустила большое обновление Python.

Версия 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 появилась поддержка защиты от переполнения стека;
  • удалены устаревшие и неактуальные модули и встроенные библиотеки.

Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!

Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Научитесь: Профессия Python-разработчик Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована