Python 文字列インターニングについて
Python は文字列インターニングを実行します。これは、文字列リテラルのコピーを 1 つだけメモリに保存することでメモリ使用量を最適化する手法です。同一の文字列をインターンすることで、Python は不要な重複の作成を避けることができます。
インターニングの仕組み
Python は通常、コンパイル中に文字列リテラルをインターンします。コード内で文字列リテラルが見つかると、Python はその文字列がインターン プールに既に格納されているかどうかを確認します。存在する場合、既存の参照が返されます。それ以外の場合は、文字列の新しいコピーが作成され、インターンされたプールに追加されます。
コンパイル時定数を使用した例
"string" is "string" # True
この場合、両方の文字列リテラルはソース コード内に存在します。 Python はこれらをコンパイル時の定数として認識し、コンパイル中にインターンします。その結果、両方の変数は同じ文字列オブジェクトを指します。
実行時式のインターニング
Python は、実行時式の結果を自動的にインターンしません。例:
"strin" + "g" is "string" # True
ここでは、文字列の連結が実行時に実行されます。結果の文字列はインターンされないため、インターンされた文字列 "string" と比較されません。
明示的なインターニング
sys を使用して既存の文字列を手動でインターンできます。 intern() 関数。インターンされた文字列はプログラム全体で共有され、メモリ効率が向上します。
実装の詳細
文字列インターンの実装は、Python インタープリタに依存します。 CPython (最も一般的な Python 実装) では、文字列インターニングはハッシュ テーブルを使用して実行されます。同じハッシュ値を持つ文字列が等しいかどうか比較され、インターンする必要があるかどうかが決定されます。
以上がPython 文字列インターンはどのように機能し、いつ発生しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。