ホームページ > バックエンド開発 > Python チュートリアル > Python の等価性テストの演算子「==」と「is」の違いは何ですか?

Python の等価性テストの演算子「==」と「is」の違いは何ですか?

Susan Sarandon
リリース: 2024-12-30 02:28:23
オリジナル
604 人が閲覧しました

What's the Difference Between Python's

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート