Python での「==」と「is」の等価性テストの違いを理解する
Python では、「==」と「is」の区別「である」等価性テストは、比較を実行するときに重要です。どちらの演算子も等価性を評価しますが、その基礎となる原則が異なります。
"is" テスト:
"is" 演算子は、2 つの変数が同じオブジェクトを参照しているかどうかをチェックします。記憶の中で。これは、両方の変数がコンピューターの RAM 内のまったく同じ場所を指しているかどうかを評価することを意味します。
"==" テスト:
"== 演算子、一方、2 つのオブジェクトの値を比較します。変数に格納されている値が同一かどうかを判断します。
リストへの適用:
文字列や整数などの不変オブジェクトの場合、「is」と「==」の両方" 同じ結果を返します。ただし、リストなどの可変オブジェクトの場合は動作が異なります。次の例を考えてみましょう。
L = [] L.append(1) if L == [1]: # True if L is [1]: # False
この例では、リスト L と [1] の値が等しいため、「==」テストは True を返します。ただし、2 つの変数がメモリ内の同じオブジェクトを参照していないため、「is」テストは False を返します。これは、L が元のリストへの参照であるのに対し、[1] は新しく作成されたリスト オブジェクトであるためです。
大きなオブジェクト:
リストのような大きなオブジェクトの場合、 "is" は、両方の変数がまったく同じオブジェクトを指している場合にのみ True を返します。例:
a = [1, 2, 3] b = a if b is a: # True b[:] = [4, 5, 6] if b is a: # False
キャッシュに関する考慮事項:
Python は小さな整数オブジェクトと文字列リテラルをキャッシュすることに注意してください。その結果、場合によっては、「==」と「is」は同じ結果を返すことがあります。ただし、これは実装の詳細であり、信頼すべきではありません。
以上がPython の等価性テストの演算子「==」と「is」の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。