この記事でわかることは、Python の is と == の違いについてです。 Python における is と == の導入は一定の参考価値があるので、困っている友人は参考にしていただければ幸いです。
Python には多数の演算子があります。今日は、is 演算子と == 演算子の応用における本質的な違いについて説明します。
2 つの演算子 is と == の違いについて説明する前に、Python のオブジェクトに含まれる 3 つの基本要素、つまり id (ID)、type (データ型)、および value (値) について理解する必要があります。 )。
Is と == はどちらもオブジェクトの比較と判定に使用されますが、オブジェクトの比較と判定の内容が異なります。具体的な違いを見てみましょう。
==比較演算子と一致演算子の違い
==はPython標準演算子の中の比較演算子で、2つのオブジェクトの値(値)が等しいかどうかを比較して判断するために使用されます。たとえば、次の 2 つの文字列の比較:
例 1.
>>> a = 'cheesezh' >>> b = 'cheesezh' >>> a == b True
は、アイデンティティ演算子とも呼ばれます。この演算子は、オブジェクト間の一意のアイデンティティを比較して決定します。つまり、 IDが同じかどうか。次のリストを比較すると、is アイデンティティ演算子がどのように機能するかがわかります。
>>> x = y = [4,5,6] >>> z = [4,5,6] >>> x == y True >>> x == z True >>> x is y True >>> x is z False >>> >>> print id(x) 3075326572 >>> print id(y) 3075326572 >>> print id(z) 3075328140
最初の 3 つの例はすべて True ですが、最後の例はなぜ False なのでしょうか。 x、y、zの値は同じなので、最初の2つがTrueでも問題ありません。なぜ最後のものが False なのかについては、3 つのオブジェクトの ID を見ればわかります。
別の例を見てみましょう。例 3 では、同じ型の a と b の (a==b) は両方とも True ですが、(a is b) は True ではありません。
>>> a = 1 #a和b为数值类型 >>> b = 1 >>> a is b True >>> id(a) 14318944 >>> id(b) 14318944 >>> a = 'cheesezh' #a和b为字符串类型 >>> b = 'cheesezh' >>> a is b True >>> id(a) 42111872 >>> id(b) 42111872 >>> a = (1,2,3) #a和b为元组类型 >>> b = (1,2,3) >>> a is b False >>> id(a) 15001280 >>> id(b) 14790408 >>> a = [1,2,3] #a和b为list类型 >>> b = [1,2,3] >>> a is b False >>> id(a) 42091624 >>> id(b) 42082016 >>> a = {'cheese':1,'zh':2} #a和b为dict类型 >>> b = {'cheese':1,'zh':2} >>> a is b False >>> id(a) 42101616 >>> id(b) 42098736 >>> a = set([1,2,3])#a和b为set类型 >>> b = set([1,2,3]) >>> a is b False >>> id(a) 14819976 >>> id(b) 14822256
例 3 からわかるように、a is b は数値型および文字列型の場合にのみ True になります。a と b がタプル、リスト、辞書、またはセット型の場合、a は b は間違い。
自分で試して、a=257 と b=257 のときに ID が同じになるかどうかを確認してください。実はパイソン 速度を最適化するために、小さな整数オブジェクト プールが使用され、頻繁な適用と整数のメモリ領域の破壊が回避されます。 Python の小さい整数の定義は [-5, 257), 数値が -5 から 256 までの場合にのみ、ID が等しくなります。この範囲を超えると、機能しません。同様に、文字列オブジェクトにも同様のバッファ プールがあります。当然、それらは一致しません。範囲を超えた場合は等しい。
一般に、a is b が True になるのは、それが数値および文字列で一般オブジェクト プール内の場合のみです。それ以外の場合は、a と b が int、str、tuple、list、dict または set 型の場合です。 、a は b は両方とも False です。
以上がPython の is と == の違いは何ですか? Python の is と == の違いの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。