ホームページ >バックエンド開発 >Python チュートリアル >Python 3.11 の最高の新機能と機能修正
この記事では、python に関する関連知識を提供します。主にバージョン 3.11 の最高の新機能と機能修正を紹介します。Python 3.11 の最も重要な新機能は次のとおりです。Python 開発者とその概要Python 開発者にとって重要な点です。以下でそれらを見てみましょう。皆さんのお役に立てれば幸いです。
推奨学習: Python ビデオ チュートリアル
Python プログラミング言語は、毎年新しいバージョンと、機能ロックされたバージョンをリリースします。今年前半にベータ版がリリースされ、年末に最終版がリリースされる予定です。 Python 3.11 の機能セットは完成したばかりで、ベータ版がテストに利用できます。開発者は、この最新バージョンを非運用コードで試して、プログラムと競合しないことを確認し、コードのパフォーマンス向上によるメリットが得られるかどうかを理解することをお勧めします。
ここでは、Python 3.11 の最も重要な新機能の概要と、それらが Python 開発者にとって何を意味するかを説明します。
Python 3.11 には多くの個別のパフォーマンスの向上がありますが、最大の改善は専用の適応型インタープリターです。オブジェクトのタイプはめったに変更されないため、インタプリタは実行中のコードを分析し、通常のバイトコードを特定のタイプのバイトコードに置き換えようとします。たとえば、二項演算 (加算、減算など) を、整数、浮動小数点、文字列に特化したバージョンに置き換えることができます。
Python 3.11 では、Python 関数呼び出しに必要なオーバーヘッドも少なくなります。関数呼び出しのスタック フレームのメモリ使用量が減り、より効率的に設計されるようになりました。さらに、再帰呼び出しは末尾最適化されていませんが (Python ではおそらく不可能です)、以前のバージョンよりも効率的です。 Python インタープリター自体の起動も高速になり、Python ランタイムに必要なコア モジュールの保存と読み込みがより効率的に行われます。
公式 Python ベンチマーク スイートによると、Python 3.11 はバージョン 3.10 よりも約 1.25 倍高速に実行されます。この高速化は全体的な尺度であることに注意してください。一部の処理は大幅に高速化されますが、他の多くの処理はわずかに高速化するか、ほぼ同じです。それでも、これらの改良点の最も優れた点は、無料であることです。 3.11 の高速化を活用するために、Python プログラムのコードを変更する必要はありません。
3.11 のもう 1 つの非常に便利な機能は、より詳細なエラー メッセージです。 Python 3.10 では、インタープリターで使用される新しいパーサーにより、すでにエラー報告が改善されています。現在、Python 3.11 ではこれが拡張され、特定の式の特定の部分がエラーの原因となった詳細なフィードバックが提供されます。
エラーをスローする次のコードについて考えてみましょう:
x = [1,2,3] z = x[1][0]
Python 3.10 では、次のようなエラー メッセージが表示されますが、あまり役に立ちません。どの int がコンパイルできないコードであるかは明らかです。 Python 3.11 のエラー トレースは、エラーを生成した行の正確な部分を示しています。
File "C:\Python311\code.py", line 2, in <module> z = x[1][0] TypeError: 'int' object is not subscriptable
これで、問題の場所がかなり明確になりました。
例外の改善:
1. 新しい else* 構文と新しい ExceptionGroup 例外タイプを使用します。複数の例外問題。これにより、非同期メソッドや同時メソッドを処理する場合や、操作を再試行するときに複数のエラーを処理する場合など、複数のエラーが同時に発生する可能性がある問題を適切に処理できます。
2. 「コストゼロ」例外: 実際に例外がスローされない限り、プログラムのメモリ消費はありません。これは、ブロックを試行/除外するデフォルトのパスの方が高速で、使用するメモリが少ないことを意味します。
3. 例外をキャッチするのに必要な時間が約 10% 短縮されます。
4. 例外は、コンテキスト コメントを使用してコード ブロックから例外を分離することで改善できます。
型ブースト:
Self 型:
任意の文字列リテラル型:
Python 3.7 以降、データ クラスを使用すると、初期化パラメーターに基づいてプロパティを作成する一般的なパターンに従うクラスを簡単に定義できるようになりました。しかし、データ クラスのように動作するもの (ただしデータ クラス自体ではない) が型アノテーションを使用してその動作を宣言できるようにする標準メカニズムはありません。データクラス変換では、type.dataclass_transform 修飾子を追加して、特定の関数、クラス、またはメタクラスがデータ クラスのように動作することをコンパイラーに通知します。
元のジェネリックの提案には、単一のパラメータ化された型を使用してジェネリック関数を指定する方法である TypeVar が含まれていました。たとえば、型 T は int または float にすることができます。 Python 3.11 では、型だけでなく、タプルとして表される型の範囲のプレースホルダーを指定するために使用できる TypeVarTuple、つまり「変数ジェネリックス」が追加されました。これは、提供された配列の形状が正しいかどうかなど、事前にエラーをチェックできる NumPy などのライブラリで特に便利です。
Python は、TOML または Tom の明示的なミニマリスト言語を構成形式 (pyproject.TOML など) として使用しますが、TOML 形式を読み取る機能は公開しません。 files は標準ライブラリ モジュールです。 Python 3.11 では、この問題を解決するために tomllib が追加されました。 tomllib は TOML ファイルの作成や書き込みを行わないことに注意してください。このためには、Tomli-W や TOML Kit などのサードパーティ モジュールが必要です。
Python の re モジュールは正規表現の処理に使用されますが、正規表現の他の実装にあるいくつかの機能が欠けています。 1 つはアトミック グループ化で、他の言語で広くサポートされています。 Python 3.11 では、アトミック グループ化の共通構文 (例: (?>...)) を使用してこのパターンをサポートするようになりました。
re モジュールのパターン マッチング エンジンも少し書き直され、約 10% 高速に実行されます。 .
PEP 594 は、多くのいわゆる消耗したバッテリー、または古いモジュールやメンテナンスされていないモジュールを Python 標準ライブラリから削除する取り組みを開始します。 Python 3.11 では、これらのライブラリは非推奨としてマークされていますが、まだ削除されていません。Python 3.13 では完全に削除される予定です。
Python 3.11 の多くの小さな改善点:
1. 名前空間が遅延して作成され、名前空間辞書が可能な限りキーを共有するようになったため、Python オブジェクトに必要なメモリが少なくなります。
2. すべてのキーを持つ辞書Unicode ではハッシュを保存する必要がなくなり、辞書のサイズが削減され、キャッシュ効率が向上します。
3. Python ランタイムは、Python インタープリターを使用して WebAssembly へのコンパイルを実験的にサポートするようになりました。これは将来の開発に役立つ可能性があります。 WASM でコンパイルされた Python ランタイムをブラウザーで実行できるようにする PyScript などのプロジェクトの例
推奨される学習: Python ビデオ チュートリアル
以上がPython 3.11 の最高の新機能と機能修正の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。