Python の "is" 演算子のニュアンス: オブジェクトの同一性と値の等価性
Python の "is" 演算子はソースです多くの開発者にとっては混乱の原因となります。変数の値を比較しているように見えますが、実際にはオブジェクトの同一性を評価します。この概念を理解するために、「is」演算子の性質をさらに深く掘り下げてみましょう。
オブジェクトの同一性と値の同一性
Python では、変数はオブジェクトへの参照を表します。記憶の中で。 「is」演算子は、値に関係なく、2 つの変数がまったく同じオブジェクトを参照しているかどうかをチェックします。一方、「==」演算子は、2 つの変数が指すオブジェクトの値を比較します。
次のコード スニペットを考えてみましょう。
x = [1, 2, 3] y = [1, 2, 3] print(x is y) # False
この例では、「x " と "y" は、同じ値を持つリストに割り当てられる 2 つの別個の変数です。ただし、「x」と「y」がメモリ内の同じオブジェクトを指していないため、「is」演算子は False を返します。
「id()」関数
オブジェクトのアイデンティティの概念をさらに理解するには、「id()」関数を使用します。この関数は、メモリ内のオブジェクトの一意の識別子を返します。たとえば、次のコードを使用して「x」と「y」の識別子を出力すると:
print(id(x)) print(id(y))
「x」と「y」が異なる識別子を持っていることが観察され、それらが別々であることが確認されます。メモリ内のオブジェクト。
変数の再割り当て
"y" を "x" に再割り当てすると、両方の変数が同じオブジェクトを指すようになります:
x = [1, 2, 3] y = [1, 2, 3] y = x print(x is y) # True
この場合、"x" と "y" はどちらも同じ基になるオブジェクトを参照するため、" is" 演算子は True を返します。
結論
オブジェクトの ID と値の区別を覚えておくことが重要ですPython における等価性。 「is」演算子はオブジェクトの同一性を評価し、「==」演算子はオブジェクトの値を比較します。この理解は、Python コードで変数やオブジェクトを操作する際の論理エラーを避けるために不可欠です。
以上がPython の「is」演算子: オブジェクトの同一性か値の等価性?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。