Python 3.10
Дата выпуска: Oct. 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)
На заметку
У нас есть представительство в Facebook. Ссылка в самом низу страницы.