Дата выпуска: 8 октября 2021 г.
Python версии 3.10
На заметку
С полным списком изменений в версии вы можете ознакомиться на странице «Python 3.10» (англ.).

Кое-что из нового:
  • Благодаря PEP 634 теперь можно описывать различные действия, которые следует произвести, если значение переменной соответствует структурному шаблону, например, совпадает тип или значение.
  • Встроенные функции, принимающие целочисленные аргументы, более не примут Decimal и Fraction, если приведение таковых к целому вызовет потерю точности.
  • Добавлены встроенные асинхронные функции aiter() и anext(), схожие с синхронными iter() и next() .
  • Добавлены base64.b32hexencode() и base64.b32hexdecode().
  • Добавлена bdb.clearBreakpoints().
  • Добавлена codecs.unregister().
  • Добавлена contextlib.aclosing(), а также поддержка асинхронных менеджеров контекста в contextlib.nullcontext(). Добавлен AsyncContextDecorator для поддержки использования асинхронных менеджеров контекста в качестве декораторов.
  • dataclasses теперь поддерживают параметр __slots__. Добавлена поддержка указания только-именованных аргументов (параметр kw_only).
  • Модуль faulthandler теперь умеет обнаруживать ошибки, происходящие в ходе сборки мусора.
  • Добавлена os.eventfd() — обёртка для соответствующего системного вызова в Linux.
  • Добавлена os.splice(), позволяющая эффективно перемещать данные между двумя файловыми дескрипторами
  • PurePath.parents теперь поддерживает обращения по отрицательным индексам.
  • Добавлен inspect.get_annotations(), вычисляющий аннотации, заданные для объекта.
  • В модуль statistics добавлены covariance(), correlation() и simple linear_regression().
  • В модуль threading добавлены gettrace() и getprofile().
  • Вместо typing.Union теперь можно использовать |: int | str. А вместо Optional| None.
  • Поведение typing.Literal стало более похожим на ожидаемое статическими анализаторами.
  • Новый typing.ParamSpec позволяет переносить определения параметров из функций более низкого в функции более высокого порядка. Полезно для декораторов.
  • Новый typing.TypeAlias позволяет лучше отличать псевдонимы типов от констант со строками.
  • В текстах трассировок для SyntaxError , IdentationError при помощи ^ указывается конкретное место ошибки.
  • В текстах трассировок для AttributeError и NameError выводится подсказка с названиями имён атрибутов и переменных, похожих на то, которое вызвало исключение.

Внимание
Из соображений безопасности urllib.parse.parse_qs() и urllib.parse.parse_qsl() теперь дозволяют только один разделитель параметров запроса (по умолчанию — &).

Внимание
Пакет distutils объявлен устаревшим и будет удалён в Python 3.12.

Оптимизация и ускорение


  • Ускорены конструкторы str, bytes, bytearray. Для небольших объектов прирост производительности 30-40%.
  • Инструкция LOAD_ATTR теперь использует кеш уровня опкода. Ускорение для обычных атрибутов примерно 36%; для слотов — 44%.
  • Сборка интерпретатора при помощи GCC с флагами --enable-optimizations, --enable-shared происходит до 30% быстрее.
  • Поиск подстроки in и .find() стал в некоторых случаях использовать алгоритм Крочмора и Перриса, чтобы избежать квадратичной сложности на длинных строках.
  • Объекты функций теперь имеют атрибут __builtins__, инициализируемый из __globals__["__builtins__"].

Предложения по улучшению (PEP)
Номер Название Тип Состояние
499 «python -m foo» должен оказаться в «sys.modules[`foo`]» и в «sys.modules[`__main__`]» С Отл.
597 Использовать UTF-8 по умолчанию для текстовых файлов С Фин.
604 Упрощенный синтаксис для Union[] и Optional[] С Утв.
612 Переменные спецификации параметров С Утв.
613 Явные псевдонимы для типов С Утв.
618 Добавить необязательную проверку длины для zip С Фин.
619 График выпуска Python 3.10 И Действ.
622 Соответствия структурному шаблону С Зам.
623 Устранение wstr для Unicode С Фин.
626 Точная нумерация строк для отладки и прочих инструментов П Действ.
632 Считать устаревшим модуль distutils С Утв.
634 Соответствия структурному шаблону: Спецификация С Утв.
635 Соответствия структурному шаблону: Мотивация и обоснование И Фин.
636 Соответствия структурному шаблону: Руководство И Фин.
637 Поддержка индексирования именованными аргументами С Откл.
640 Синтаксис для неиспользуемых переменных С Откл.
641 Использование подчерка в блоке версии, в метках совместимости Python 3.10 С Откл.
642 Синтаксис шаблона ограничений для соответствий структурному шаблону С Откл.
644 Требовать OpenSSL 1.1 или новее С Фин.
647 Пользовательские часовые для типов С Утв.
652 Поддержание стабильного ABI С Фин.
На заметку
Зарегистрированные пользователи могут публиковать свои мнения относительно Книг, Видео, Статей других авторов и прочего в разделе Обсуждений.