ホームページ >バックエンド開発 >Python チュートリアル >Python の文字列比較: '==' が 'is' と異なるのはどのような場合ですか?

Python の文字列比較: '==' が 'is' と異なるのはどのような場合ですか?

DDD
DDDオリジナル
2024-12-27 03:30:14912ブラウズ

Python String Comparisons: When Does '==' Differ From 'is'?

'==' と 'is' の文字列比較における矛盾を明らかにする

Python プログラミングでは、次のような場合に一見矛盾した結果に遭遇することがあります。 「==」演算子と「is」演算子を使用した文字列の比較。これらの違いを理解するために、これらの演算子の性質を詳しく見てみましょう。

等価テストと同一性テスト

「==」演算子は等価テストを実行し、次のことを判断します。 2 つの値は同じ内容を持ちます。対照的に、「is」演算子は同一性テストを実行し、2 つの変数がメモリ内のまったく同じオブジェクトを参照しているかどうかを検証します。

不一致の図解

次のシナリオを考えてみましょう。 :

s1 = 'text'
s2 = 'text'

この場合、一貫して 's1 == s2' True を返し、2 つの文字列のテキスト内容が同じであることを示します。ただし、「s1 は s2」が False を返す場合があり、困惑することがあります。

Python インタプリタの視点

この動作を理解するには、Python がどのように動作するかを認識することが重要です。インタプリタは文字列を処理します。文字列変数に値を割り当てると、Python はその値がすでにメモリに格納されているかどうかを確認します。存在する場合、変数にその既存のオブジェクトへの参照が割り当てられます。

次の点を考慮してください。

a = 'pub'
b = ''.join(['p', 'u', 'b'])

テキストの内容が同じであるにもかかわらず、'a' と 'b' は、メモリ内の同じオブジェクト。 「a」は既存の文字列オブジェクトを参照し、「b」は新しく作成された文字列オブジェクトを参照します。したがって、「a == b」は True (等価性テスト) ですが、「a is b」は False (同一性テスト) です。

結論

区別を理解するPython で正確な文字列比較を行うには、等価性テスト ('==' による) と同一性テスト ('is' による) の間のテストが不可欠です。 「is」は同じメモリ オブジェクトへの参照を検証し、「==」はその内容を比較することに注意してください。

以上がPython の文字列比較: '==' が 'is' と異なるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。