ホームページ >バックエンド開発 >Python チュートリアル >Python 3.11 の最高の新機能と機能修正

Python 3.11 の最高の新機能と機能修正

WBOY
WBOY転載
2022-05-30 18:57:552955ブラウズ

この記事では、python に関する関連知識を提供します。主にバージョン 3.11 の最高の新機能と機能修正を紹介します。Python 3.11 の最も重要な新機能は次のとおりです。Python 開発者とその概要Python 開発者にとって重要な点です。以下でそれらを見てみましょう。皆さんのお役に立てれば幸いです。

Python 3.11 の最高の新機能と機能修正

推奨学習: 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

これで、問題の場所がかなり明確になりました。

例外の改善:

Python のエラー処理メカニズムには、Python 3.11 で多くの新機能が追加されました:

1. 新しい else* 構文と新しい ExceptionGroup 例外タイプを使用します。複数の例外問題。これにより、非同期メソッドや同時メソッドを処理する場合や、操作を再試行するときに複数のエラーを処理する場合など、複数のエラーが同時に発生する可能性がある問題を適切に処理できます。

2. 「コストゼロ」例外: 実際に例外がスローされない限り、プログラムのメモリ消費はありません。これは、ブロックを試行/除外するデフォルトのパスの方が高速で、使用するメモリが少ないことを意味します。

3. 例外をキャッチするのに必要な時間が約 10% 短縮されます。

4. 例外は、コンテキスト コメントを使用してコード ブロックから例外を分離することで改善できます。

型ブースト:

Python の型ヒント機能により、大規模なコード ベースの管理と分析が容易になり、Python 3.5 以降、リビジョンが増えるたびに型ヒントのパフォーマンスが大幅に向上しました。 Python 3.11 では、いくつかの新しい型ヒントが導入されています。

Self 型:

クラス メソッドでは、self 型を返す前に、遅延した詳細な宣言が必要です。 type .Self パターンを使用すると、クラス メソッドの戻り値を簡単に宣言できます。これらの方法の分析ツールから、有用で予測可能な結果を​​得ることができます。

任意の文字列リテラル型:

以前は、型アノテーションは、指定された変数が文字列リテラル、つまりソース コードで定義された文字列である必要があることを定義できませんでした。新しいタイプ。 LiteralString アノテーションにより、この問題が解決されます。リンターは、新しいアノテーションを使用して、変数がソースで定義された文字列であるか、ソースで定義された文字列のみで構成される新しい文字列であるかをテストできます。

データ クラス変換:

Python 3.7 以降、データ クラスを使用すると、初期化パラメーターに基づいてプロパティを作成する一般的なパターンに従うクラスを簡単に定義できるようになりました。しかし、データ クラスのように動作するもの (ただしデータ クラス自体ではない) が型アノテーションを使用してその動作を宣言できるようにする標準メカニズムはありません。データクラス変換では、type.dataclass_transform 修飾子を追加して、特定の関数、クラス、またはメタクラスがデータ クラスのように動作することをコンパイラーに通知します。

変数ジェネリック:

元のジェネリックの提案には、単一のパラメータ化された型を使用してジェネリック関数を指定する方法である TypeVar が含まれていました。たとえば、型 T は int または float にすることができます。 Python 3.11 では、型だけでなく、タプルとして表される型の範囲のプレースホルダーを指定するために使用できる TypeVarTuple、つまり「変数ジェネリックス」が追加されました。これは、提供された配列の形状が正しいかどうかなど、事前にエラーをチェックできる NumPy などのライブラリで特に便利です。

stdlib での TOML 読み取り専用サポート:

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 のその他の新機能、修正、および変更点:

Python 3.11 の多くの小さな改善点:

1. 名前空間が遅延して作成され、名前空間辞書が可能な限りキーを共有するようになったため、Python オブジェクトに必要なメモリが少なくなります。

2. すべてのキーを持つ辞書Unicode ではハッシュを保存する必要がなくなり、辞書のサイズが削減され、キャッシュ効率が向上します。

3. Python ランタイムは、Python インタープリターを使用して WebAssembly へのコンパイルを実験的にサポートするようになりました。これは将来の開発に役立つ可能性があります。 WASM でコンパイルされた Python ランタイムをブラウザーで実行できるようにする PyScript などのプロジェクトの例

推奨される学習: Python ビデオ チュートリアル

以上がPython 3.11 の最高の新機能と機能修正の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。