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)
На заметку
В разделе «События» можно узнать о надвигающихся событиях мира Python, а также поделиться своими. Если вы являетесь организатором встречи/конференции/спринта, зарегистрируйте это событие в указанном разделе, чтобы о нём узнали все желающие.