==
オペレータテスト値同値。is
オペレータは、オブジェクトIDをテストし、Pythonは2が実際に(メモリ内の同じアドレスにすなわち、ライブ)同じオブジェクトであるかどうかをテストします。
>>> a = 'banana'
>>> b = 'banana'
>>> a is b
True
この例では、Pythonは1つの文字列オブジェクトのみを作成し、両方a
を作成b
して参照します。その理由は、Pythonが一部の文字列を内部的にキャッシュして最適化として再利用するためです。実際には、メモリ内に文字列「バナナ」があり、aとbによって共有されます。通常の動作をトリガーするには、より長い文字列を使用する必要があります。
>>> a = 'a longer banana'
>>> b = 'a longer banana'
>>> a == b, a is b
(True, False)
2つのリストを作成すると、2つのオブジェクトが取得されます。
>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> a is b
False
この場合、2つのリストは同じ要素であるが、同じオブジェクトではないため同一ではないため、同等であると言えます。2つのオブジェクトが同一の場合、それらも同等ですが、同等の場合、必ずしも同一であるとは限りません。
がa
オブジェクトをb = a
参照し、を割り当てた場合、両方の変数が同じオブジェクトを参照します。
>>> a = [1, 2, 3]
>>> b = a
>>> b is a
True