Pythonが平均1.22倍高速化、メジャー安定版「Python 3.11」の機能向上とは:Python 3.10から平均1.22倍高速化
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のプルリクエスト番号を指す。
一般的な変更点
PEP 657:トレースバックにエラーの場所の詳細が追加
Cpythonインタープリタが表示するトレースバックを改善するために、各バイトコード命令から、それらを生成した行の開始カラムと終了カラムのオフセットおよび終了行番号へのマッピングが、トレースバックに含まれるようになった。
PEP 654:例外グループと「except*」
新しい標準の例外型「ExceptionGroup」が導入され、プログラムが無関係な複数の例外を同時に発生させ、処理できるようになった。ExceptionGroupを処理する新しい構文として「except*」も導入された。
PEP 680:標準ライブラリでのTOML構文解析のサポート
標準ライブラリに「tomllib」モジュールが追加され、TOML(Tom’s Obvious Minimal Language)を構文解析できるようになった。
gh-90908:「asyncio」へのタスクグループの導入
「asyncio.TaskGroup」という新しいクラスが追加され、__aexit__が実行されている間、サブタスクがさらにサブタスクを生成し続けることが可能になった。__aexit__は、最後のサブタスクが実行されると、終了する。
gh-34627:正規表現での原子グループ化((?>...))と所有量詞(*+, ++, ?+, {m,n}+)のサポート
高速化
Faster CPython Projectの取り組みにより、Python 3.11はPython 3.10よりも10〜60%高速化した。標準的なベンチマークスイートで平均1.22倍の速度向上が計測された。
型付けと型付け言語の変更点
PEP 673:自己型
自身のクラスのインスタンスを返すメソッドにアノテーションを付けるためのシンプルで直感的な方法が導入された。
PEP 646:可変個引数のジェネリクス
「TypeVarTuple」が導入され、任意の数の型を持つ、つまり可変個引数の型変数のパラメーター化が可能になり、可変個引数のジェネリクスが利用可能になった。
PEP 675:任意のリテラル文字列型
リテラル文字列型のスーパータイプ「LiteralString」が導入され、関数が「Literal["foo"]」や「Literal["bar"] のような任意のリテラル文字列型を受け入れることができるようになった。
PEP 655:TypedDictにおける個々の項目の記法
「Required[]」と「NotRequired[]」という2つの記法が導入された。Required[]は、TypedDictの個々の項目を必須としてマークするために使用できる。NotRequired[]は個々の項目を、欠落の可能性があるものとしてマークするために使用できる。
TypedDictの必須キーと欠落の可能性があるキーの正しい使い方は、静的型チェッカーによってのみ強制される。
PEP 681:データクラスの変換
ほとんどの型チェッカー、リンター、言語サーバは、データクラスを完全にサポートしている。この機能が一般化され、サードパーティーライブラリが、「特定のデコレーター関数、クラス、メタクラスが、データクラスに似た振る舞いを提供すること」を示せるようになった。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
謎めく「言語ランキング」の世界、Python vs. Javaが無意味な訳
モバイル開発やWeb開発を手掛けるCleveroadは、プログラミング言語の主要な人気ランキングとして、「TIOBEインデックス」と「PYPL」の2つを取り上げて比較した。併せてランキング上位の言語の特徴や動向を解説した。Pythonで線形代数!〜行列・応用編(行列式・固有値)
AI/機械学習で使われるデータを表現するためにはベクトルや行列などの線形代数を理解することが必要不可欠。今回は行列式と固有値/固有ベクトルの求め方、さらに、それらの応用について、プログラミングの方法を初歩から見ていく。Pythonの人気はどこから来るのか 開発言語ランキングから分かること
TIOBE Softwareはプログラミング言語の人気ランキング「TIOBEインデックス」の2022年8月版を発表した。「Python」「C」「Java」「C++」という上位4言語のレーティングが、2021年8月比で大きく上昇した。