ホームページ >バックエンド開発 >Python チュートリアル >Python の演算子「==」と「is」の違いの分析
2 つの 演算子is と == の違いについて説明する前に、まず Python の object に含まれる 3 つの基本要素、つまり id (アイデンティティ識別子)、Python 型について知っておく必要があります。 () (データ型) と value(値)。 is と == は両方ともオブジェクトを比較して判断するために使用されますが、オブジェクトを比較する内容が異なります。具体的な違いを見てみましょう。
Python では 2 つのオブジェクトが等しいかどうかを比較する方法が 2 つあります。簡単に言うと、その違いは次のとおりです。は 2 つの reference が同じオブジェクトを指しているかどうかを比較することです (参照比較)。
== は、2 つのオブジェクトが等しいかどうかを比較します。
>>> a = [1, 2, 3] >>> b = a >>> b is a # a的引用复制给b,他们在内存中其实是指向了用一个对象 True >>> b == a # 当然,他们的值也是相等的 True >>> b = a[:] # b通过a切片获得a的部分,这里的切片操作重新分配了对象, >>> b is a # 所以指向的不是同一个对象了 False >>> b == a # 但他们的值还是相等的 True実装原理は、両者が同じオブジェクトかどうかを比較するので、比較されるのはメモリアドレス(IDが同じかどうか)です。 == は値の比較です。 int、str などの不変オブジェクトは、値を直接比較します。 Python に既知のオブジェクトの場合、比較のために eq
对象缓存机制Python は比較的小さいオブジェクトをキャッシュします。次に比較的小さいオブジェクトが使用されると、キャッシュ領域内を検索します。新しいメモリは開きませんが、小さいオブジェクトのアドレスを割り当て続けます。オブジェクトを新しい値に変換します。例:
>>> c = 1 >>> d = 1 >>> print(c is d) True >>> 1000 is 10**3 False >>> 1000 == 10**3 True代入は計算され、バッファ領域を使用しません。これは最初のコード例からわかります。 strings
の場合、intern関数を使用してバッファの使用を強制できます。
以上がPython の演算子「==」と「is」の違いの分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。