Python — это высокоуровневый интерпретируемый язык программирования, философия которого делает упор на удобочитаемость кода.
После года разработки выпущена новая версия языка программирования Python, 3.11 . Поддержка новой ветки будет продолжаться полтора года, после чего в течение следующих трех с половиной лет будут выпускаться патчи для устранения уязвимостей.
Одновременно началось альфа-тестирование ветки Python 3.12 (согласно новому графику разработки, работа над новой веткой начинается за пять месяцев до релиза предыдущей ветки и достигает стадии альфа-тестирования к моменту выхода следующей версии).
Ветка Python 3.12 будет находиться в альфа-версии в течение семи месяцев, в течение которых будут добавлены новые функции и исправлены ошибки. После этого в течение трех месяцев будет проходить бета-тестирование, в течение которого будет запрещено добавление новых функций и все внимание будет уделено исправлению ошибок. Последние два месяца перед запуском ветка будет находиться в стадии кандидата на запуск, после чего произойдет окончательная стабилизация.
Основные новые функции Python 3.11
В этой новой версии проделана значительная работа по оптимизации производительности . Новая ветка включает изменения, связанные с ускорением и встроенным развертыванием вызовов функций , использованием быстрых интерпретаторов для типичных операций, а также оптимизациями, разработанными в проектах Cinder и HotPy. В зависимости от рабочей нагрузки скорость выполнения кода увеличивается на 10–60%. В среднем, производительность в тестовом наборе pyperformance повысилась на 25%.
Механизм кэширования байт-кода был переработан , что сократило время запуска интерпретатора на 10-15%. Объекты, содержащие байт-код, теперь статически выделяются интерпретатором, что исключает этапы декодирования байт-кода, полученного из кэша, и преобразования объектов, содержащих байт-код, для динамического размещения в памяти.
Добавлена поддержка групп исключений , что позволяет программе генерировать и обрабатывать несколько различных исключений одновременно. Предложены новые типы исключений, ExceptionGroup и BaseExceptionGroup, для группировки и объединения нескольких исключений, а также добавлено выражение "except*" для разделения исключений внутри группы.
Добавлен специальный тип LiteralString , который может содержать только строковые литералы, совместимые с типом LiteralString (т. е., простые строки и строки типа LiteralString, но не произвольные или комбинированные строки типа str). Тип LiteralString можно использовать для ограничения передачи строковых аргументов функциям, предотвращая произвольную подстановку частей строк, где могут возникать уязвимости, например, при генерации строк для SQL-запросов или команд оболочки.
Кроме того, предусмотрена возможность помечать отдельные элементы типизированных словарей (TypedDict) метками «Обязательно» и «Необязательно», чтобы определить обязательные и необязательные поля (по умолчанию все объявленные поля являются обязательными, если параметр total не установлен в значение False).
Добавлен декоратор `@dataclass_transform` для классов, методов и функций ; при его указании статический анализатор типов обрабатывает объект так, как если бы он использовал декоратор `@dataclasses.dataclass`.
Из других изменений, которые выделяются в этой новой версии:
- Добавлена возможность использовать атомарную группировку ((?>…)) и ревнивые (притяжательные) квантификаторы (*+, ++, ?+, {m,n}+) в регулярных выражениях.
- Добавлен тип TypeVarTuple, который позволяет использовать дженерики переменных, в отличие от TypeVar, который охватывает не один тип, а произвольное количество типов.
- Стандартная библиотека включает модуль tomllib с функциями для разбора формата TOML.
- В класс BaseException был добавлен метод add_note(), который позволяет прикреплять текстовую заметку к исключению, например, для добавления контекстной информации, которая не была доступна во время создания исключения.
- Для представления текущего закрытого класса был добавлен специальный тип Self. Self можно использовать для аннотирования методов, возвращающих экземпляр вашего класса, более простым способом, чем использование TypeVar.
- Добавлен параметр командной строки «-P» и переменная среды PYTHONSAFEPATH для отключения автоматического подключения потенциально небезопасных путей к файлам в sys.path.
- Утилита py.exe для платформы Windows была значительно улучшена и теперь поддерживает синтаксис «-V:». / " в дополнение к "- . ».
- Многие макросы C API были преобразованы в обычные или статические встроенные функции.
- Модули uu, cgi, pipe, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev и sunau объявлены устаревшими и будут удалены из Python. выпуск 3.13.
- Удалены функции PyUnicode_Encode*.
- Класс TaskGroup был добавлен в модуль asyncio с реализацией асинхронного менеджера контекста, который ожидает завершения группы задач.
- Добавление задач в группу осуществляется с помощью метода create_task().
Наконец, если вас интересует более подробная информация по этому вопросу , вы можете найти ее по следующей ссылке.