Python 3.9
Дата выпуска: 5 октября 2020 г.
Python версии 3.9
На заметку
С полным списком изменений в версии вы можете ознакомиться на странице «Python 3.9» (англ.).
Внимание
Версия Python 3.9 последняя, в которой сохраняются специальные слои для обратной совместимости с Python 2 (они поднимают DeprecationWarning ).
Кое-что из нового:
- Встроенные типы теперь можно использовать в разметке типов без импорта из
typing. Например:list[str]вместоList[str]. - Добавлена поддержка операторов
|(слияние) и|=(обновление) для словарей. - Добавлены методы строк для работы с афиксами:
str.removeprefix(prefix),str.removesuffix(suffix). - Добавлена
os.pidfd_open(), позволяющая на Linux 5.3+ управлять процессами бег гонок и сигналов. - Улучшения по PEP 573 для быстрого доступа к состоянию модулей для методов из типов из расширений на Си.
- Использование нового, более гибкого РВГ-парсера.
- Новый модуль
zoneinfoвключает база временных зон IANA. - Новый модуль
graphlibпредлагает возможности для топологической сортировки графов. __file__модуля__main__теперь содержит не относительный, а абсолютный путь.- Рабочие
ProcessPoolExecutorтеперь рождаются по требованию, только когда нет свободных рабочих для повторного использования. - В модуль
mathдобавленыlcm()иnextafter(),ulp()для работы с числами с плавающей запятой. - Добавлена
random.Random.randbytesдля генерирования случайного набора байтов.
Оптимизация и ускорение
- Ускорение некоторых встроенных типов (range, tuple, set, frozenset, list, dict) за счёт PEP 590.
- Некоторые модули (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, math, operator, resource, time, _weakref) теперь используют многофазную инициализацию по PEP 489.
- Оптимизирован механизм обработки сигналов для приложений с нитями. Только основная нить основного интерпретатора может обработать сигнал.
- Декодирование коротких ASCII строк кодеками UTF-8 и ASCII ускорено на 15%.
Предложения по улучшению (PEP)
| Номер | Название | Тип | Состояние |
|---|---|---|---|
| 432 | Упрощение последовательности запуска CPython | С |
Отозв. |
| 534 | Дистрибуция подмножества стандартной библиотеки | С |
Отл. |
| 584 | Операторы «+» и «-» для встроенного класса словарей | С |
Фин. |
| 585 | Соглашения для удобства пользования аннотациями типов | С |
Фин. |
| 593 | Гибкие аннотации для функций и переменных | С |
Фин. |
| 596 | График выпуска Python 3.9 | И |
Действ. |
| 598 | Поэтапные нововведения | И |
Отозв. |
| 602 | Годичный цикл для выпусков Python | И |
Действ. |
| 603 | Добавление типа frozenmap в collections | С |
Черн. |
| 605 | Выделенный поток для готовящихся выпусков СPython | И |
Откл. |
| 606 | Версия совместимости для Python | С |
Откл. |
| 607 | Сокращение задержек нововведений в CPython | И |
Фин. |
| 608 | Согласованные выпуски Python | С |
Откл. |
| 614 | Грамматические послабления для декораторов | С |
Фин. |
| 615 | Поддержка БД временных зон IANA в стандартной библиотеке | С |
Фин. |
| 616 | Строковые методы для устранения префиксов и суффиксов | С |
Фин. |
| 617 | Новый РВГ парсер для CPython | С |
Фин. |
На заметку
В разделе «События» можно узнать о надвигающихся событиях мира Python, а также поделиться своими. Если вы являетесь организатором встречи/конференции/спринта, зарегистрируйте это событие в указанном разделе, чтобы о нём узнали все желающие.