Что нового в Python 3.11
Python 3.11.2 — самая последняя версия популярного языка программирования, включающая в себя ряд новых функций и улучшений. В этой статье блога мы рассмотрим некоторые новые функции Python 3.11 и дадим пример кода, который поможет вам начать работу.
Краткое содержание
Python 3.11 на 10–60 % быстрее, чем 3.10. Измерено ускорение в 1,25 раза на стандартном наборе тестов. Есть exception, speed, syntaxулучшения.
Исключения
С этого момента вы можете создавать несколько исключений, используя группы исключений.
PEP 654 представляет языковые функции, которые позволяют программе одновременно вызывать и обрабатывать несколько несвязанных исключений. Встроенные типыExceptionGroupиBaseExceptionGroupпозволяют группировать исключения и вызывать их вместе, а новыйexcept*синтаксис обобщаетexceptдля соответствия подгруппам групп исключений.
https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-pep654
Также вы можете добавлять примечания к вашему исключению, используя это, вы можете легко предоставить больше информации. Вам нужно поймать исключение, используя try exceptзатем вам нужно добавить заметку и снова поднять ее.
try:
i = 1 / 0
except Exception as e:
e.add_note("New Note: Zero Division Error")
raise
Traceback (most recent call last):
File "C:/Users/Sarper/Desktop/test.py", line 2, in <module>
i = 1 / 0
ZeroDivisionError: division by zero
New Note: Zero Division Error
Добавлен новый тип Self, который является нормальным self.
Новые функции, связанные с подсказками типов
В этом разделе рассматриваются основные изменения, затрагивающие подсказки типов PEP 484 и typingмодуль.
Вот пример:
from typing import Self
class MyClass:
def __init__(self, num):
self.num = num
def create_class(self) -> Self:
return MyClass(3) # returning new class
my_class = MyClass(2)
print(my_class.create_class())
# OUTPUT:
# <__main__.MyClass object at 0x000002477E1D0250>
from typing import Self
class MyClass:
def __init__(self, num):
self.num = num
def return_class(self) -> Self:
return self # returning self
my_class = MyClass(2)
print(my_class.return_class())
# OUTPUT:
<__main__.MyClass object at 0x0000014B89E71350>
Requiredи NotRequiredпредоставить простой способ отметить, TypedDictдолжны ли присутствовать отдельные элементы в a. Ранее это было возможно только с использованием наследования.
Все поля по-прежнему являются обязательными по умолчанию, если для параметра total не установлено значение False, в этом случае все поля по-прежнему не являются обязательными по умолчанию. Например, следующее указывает a TypedDictс одним обязательным и одним необязательным ключом:
Создание специальных словарей — это мощная возможность, если вы хотите создавать библиотеки и уменьшать количество ошибок, которые могут возникнуть у пользователя.
class Movie(TypedDict):
title: str
year: NotRequired[int]
m1: Movie = {"title": "Black Panther", "year": 2018} # OK
m2: Movie = {"title": "Star Wars"} # OK (year is not required)
m3: Movie = {"year": 2022} # ERROR (missing required field title)
class Movie(TypedDict, total=False):
title: Required[str]
year: int
asyncio contextlib dataclasses datatime enum fcntl fractions functools haslib inpect locale logging math operator os pathlib re shutlit socket sqlite3 string sys sysconfig tempfile threading time tkinter traceback typing unicodedata unittest venv warnings zipfile
Смотрите здесь для получения дополнительной информации
Ускорение операций
- Бинарные операции
x+x; x*x; x-x;10% - Индекс
a[i]10–25% - Подписка магазина
a[i] = z10–25% - Звонки
f(arg)C(arg)20% - Загрузить глобальную переменную
printlen[1 ] - Загрузить атрибут
o.attr[ 3] - Методы загрузки для звонка
o.meth()10–20% - Сохранить атрибут
o.attr = z2% в pyperformance - Последовательность распаковки
*seq8%
Источник
https://docs.python.org/3/whatsnew/3.11.html

![В любом случае, что такое связанный список? [Часть 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































