文字列の比較: '==' と 'is' の難問
プログラミングでは、文字列の比較は多くの場合重要な操作です。ただし、「==」演算子と「is」演算子を使用すると、異なる結果が得られる場合があり、開発者は困惑することがあります。
違いを理解する
「=」演算子は次のチェックを行います。 'is' は値が等しいかどうかをチェックし、'is' はメモリ内の同一性をチェックします。同一性テストでは 2 つの変数がメモリ内のまったく同じオブジェクトを参照しているかどうかが判断され、等価性テストではそれらの値が比較されます。
違いが生じる理由
文字列を比較する場合、Python は最適化を行います。既存の文字列を再利用することでメモリ使用量を削減します。したがって、同じ文字列値を複数の変数に代入しても、新しい文字列オブジェクトは作成されず、代わりに同じ基になるオブジェクトを参照する可能性があります。これは、「==」が等しい文字列に対して True を返す理由を説明しています。
ただし、文字列が変更されたり、異なる値が割り当てられたりすると、新しいオブジェクトが作成され、ID リンクが壊れます。その結果、値が等しいため、「==」が True を返しても、「is」は False を返します。
例
次のコードを考えてみましょう。
s1 = 'text' s2 = 'text'
ここでは、s1 と s2 の両方が同じ文字列オブジェクトを参照しているため、「==」と「である」は True を返します。ただし、s2 を変更すると:
s2 = s2 + ' more'
今度は、s2 に対して新しい文字列オブジェクトが作成され、ID リンクが切断されます。 「==」は値が等しいため True を返しますが、「is」は s1 と s2 が異なるオブジェクトを参照しているため False を返します。
以上がPython の文字列比較: `==` と `is` をいつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。