Python 3.9.0
Вышел новый стабильный релиз популярного языка программирования Python.
Python — высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода. Основные черты — динамическая типизация, автоматическое управление памятью, полная интроспекция, механизм обработки исключений, поддержка многопоточных вычислений, высокоуровневые структуры данных.
Python — стабильный и распространённый язык. Он используется во многих проектах и в различных качествах: как основной язык программирования или для создания расширений и интеграции приложений. Основные области применения: веб-разработка, машинное обучение и анализ данных, автоматизация и системное администрирование. В настоящий момент Python занимает третье место в рейтинге TIOBE.
Основные изменения:
Новый высокопроизводительный синтаксический анализатор на базе грамматик PEG.
В новой версии текущий парсер Python на основе грамматик LL (1)(КС-грамматика) заменён на новый высокопроизводительный и стабильный синтаксический анализатор на базе PEG (РВ-грамматика). Анализаторы для языков, представленных КС-грамматиками, такие как LR-анализаторы, требуют особого шага лексического анализа, который разбивает входные данные в соответствии с пробелами, пунктуацией и так далее. Это необходимо, так как эти анализаторы используют предварительный анализ для обработки некоторых КС-грамматик в линейное время. РВ-грамматики не требуют отдельного шага лексического анализа, а правила для него могут быть заложены вместе с другими правилами грамматики.
Новые операторы и функции
Во встроенный класс dict
добавлены два новых оператора, |
для слияния словарей и |=
для обновления.
В класс str
добавлены две новые функции: str.removeprefix(префикс)
и str.removesuffix(суффикс)
.
Подсказка типа для встроенных типов коллекций
В этом релизе включена поддержка синтаксиса генераторов во всех стандартных коллекциях, доступных в настоящее время.
def read_blog_tags(tags: list[str]) -> None:
for tag in tags:
print("Tag Name", tag)
Другие изменения
-
PEP 573 Доступ к состоянию модуля с помощью методов расширения C
-
PEP 593 Гибкие функции и переменные аннотации
-
PEP 602 Python переходит на ежегодные стабильные релизы
-
PEP 614 Смягчающие грамматические ограничения на декораторы
-
PEP 615 Поддержка базы данных IANA по часовым поясам в стандартной библиотеке
-
BPO 38379 уборка мусора не блокируется на восстановленных объектах
-
BPO 38692
os.pidfd_open
, для управлять процессами без гонок и сигналов; -
BPO 39926 поддержка Unicode обновлена до версии 13.0.0
-
BPO 1635741, при многократной инициализации Python в одном и том же процессе, больше не происходит утечка памяти
-
Коллекции Python (range, tuple, set, frozenset, list, dict) ускоренны с помощью векторного вызова PEP 590
-
Некоторые модули Python (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, ресурс, time, _weakref) теперь используют многофазную инициализацию, как определено в PEP 489
-
Ряд стандартных модулей библиотек (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) теперь используют стабильный ABI, определенный PEP 384.
>>> Подробности