Pythonの最新のメジャー安定版リリース「Python 3.11.0」が公開された。多くの新機能を提供し、多くの最適化が施されている。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
プログラミング言語「Python」を開発するPython Software Foundationは2022年10月24日(米国時間)、Pythonの最新のメジャー安定版リリース「Python 3.11.0」を公開した。
Python 3.11.0では多くの新機能が導入され、多くの最適化が施されている。Python Software Foundationは主要な新機能と変更点を、一般的な変更点と、型付けおよび型付け言語の変更点に大別して紹介している。なお、以下の「PEP」で始まる番号は、Pythonの拡張提案を記した文書の通し番号を指す。PEPは、Python Enhancement Proposalの略。また、「gh-」で始まる番号は、GitHubのプルリクエスト番号を指す。
Cpythonインタープリタが表示するトレースバックを改善するために、各バイトコード命令から、それらを生成した行の開始カラムと終了カラムのオフセットおよび終了行番号へのマッピングが、トレースバックに含まれるようになった。
新しい標準の例外型「ExceptionGroup」が導入され、プログラムが無関係な複数の例外を同時に発生させ、処理できるようになった。ExceptionGroupを処理する新しい構文として「except*」も導入された。
標準ライブラリに「tomllib」モジュールが追加され、TOML(Tom’s Obvious Minimal Language)を構文解析できるようになった。
「asyncio.TaskGroup」という新しいクラスが追加され、__aexit__が実行されている間、サブタスクがさらにサブタスクを生成し続けることが可能になった。__aexit__は、最後のサブタスクが実行されると、終了する。
Faster CPython Projectの取り組みにより、Python 3.11はPython 3.10よりも10〜60%高速化した。標準的なベンチマークスイートで平均1.22倍の速度向上が計測された。
自身のクラスのインスタンスを返すメソッドにアノテーションを付けるためのシンプルで直感的な方法が導入された。
「TypeVarTuple」が導入され、任意の数の型を持つ、つまり可変個引数の型変数のパラメーター化が可能になり、可変個引数のジェネリクスが利用可能になった。
リテラル文字列型のスーパータイプ「LiteralString」が導入され、関数が「Literal["foo"]」や「Literal["bar"] のような任意のリテラル文字列型を受け入れることができるようになった。
「Required[]」と「NotRequired[]」という2つの記法が導入された。Required[]は、TypedDictの個々の項目を必須としてマークするために使用できる。NotRequired[]は個々の項目を、欠落の可能性があるものとしてマークするために使用できる。
TypedDictの必須キーと欠落の可能性があるキーの正しい使い方は、静的型チェッカーによってのみ強制される。
ほとんどの型チェッカー、リンター、言語サーバは、データクラスを完全にサポートしている。この機能が一般化され、サードパーティーライブラリが、「特定のデコレーター関数、クラス、メタクラスが、データクラスに似た振る舞いを提供すること」を示せるようになった。
Copyright © ITmedia, Inc. All Rights Reserved.