Python 3.11 の新機能
Python 3.11.2 は、人気のあるプログラミング言語の最新バージョンであり、多数の新機能と改善点が含まれています。このブログ記事では、Python 3.11 の新機能のいくつかを紹介し、開始するためのサンプル コードをいくつか紹介します。
まとめ
Python 3.11 は 3.10 より 10 ~ 60% 高速です。標準ベンチマーク スイートで 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
新しいタイプは add で、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以前は、これは継承を使用する場合のみ可能でした。
totalパラメータが に設定されていない限り、すべてのフィールドはデフォルトで必須のままですFalse。この場合、すべてのフィールドはデフォルトでは必須ではありません。たとえば、次の例では をTypedDict1 つの必須キーと 1 つの必須でないキーで指定します。
特別な辞書の作成は、ライブラリを構築し、ユーザーから発生する可能性のあるエラーを軽減したい場合に強力な機能です。
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)



































