文字列比較の不一致の詳細: '==' と 'is'
いずれかの '== を使用して文字列を比較する行為' または 'is' は、場合によっては対照的な結果をもたらすことがあります。これにより、なぜこの不一致が存在するのかという疑問が生じます。
2 つの文字列変数は同じ値を持つ可能性がありますが、's1 == s2' は一貫して True を返しますが、's1 is s2' は時々 False を返します。
Python で解釈すると、同様の比較が成功します。
>>> s1 = 'text' >>> s2 = 'text' >>> s1 is s2 True
この現象を理解するには、次のことが重要です。同一性テスト ('is') と等価性テスト ('==') を区別します。
この例では、発生する内容が次のようにインタプリタで再現されます。
>>> a = 'pub' >>> b = ''.join(['p', 'u', 'b']) >>> a == b True >>> a is b False
不一致は、「is」がオブジェクトのアイデンティティ (つまり、メモリアドレス) を比較するのに対し、「==」はそれらの値を比較するために発生します。上記のシナリオでは、「a」と「b」は同じ値を持ちますが、メモリ内に別々に存在します。
したがって、たとえそれらが別個のオブジェクトであるとしても、「a is b」が False と評価されるのは論理的です。それらの内容は一致します。本質的に、「a は b」は「id(a) == id(b)」と同じです。
以上がPython の文字列比較: `==` が `is` と異なるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。