比較演算子とis演算子


ソース-Wikidocsのアップグレード

比較演算子


Pythonで2つの値を比較する場合は==演算子を使用します.2つのオブジェクトが同じ値を持つかどうかを比較し、2つのオブジェクトが同じアドレスに割り当てられたオブジェクトであるかどうかを比較するには、is演算子を使用します.
比較値:==
比較対象アドレス:is
a = 1000
b = 1000
id(a)
>>> 2074833836240
id(b) 
>>> 2074833839984

print(a == b)
>>> True

print(a is b)
>>> False
上記のコードでは、aとbは同じ値1000をバインドします.ただし、1000という名前の整数オブジェクトは、互いのメモリ位置に割り当てられた異なるオブジェクトです.したがって、==演算子の結果はtrueであり、is演算子の結果はfalseである.
しかし、次の状況は違います.今回はもっと小さい整数値をバインドします.
a = 77
b = 77
id(a)
>>> 2074832800368
id(b)
>>> 2074832800368

print(a == b)
>>> True

print(a is b)
>>> True
今回は、2つの変数a,bが同じアドレスを表し、==、is演算子が真の値を返すことがわかります.
これは、Pythonから整数256までの値が既に存在する場合、既存のオブジェクトがバインドされるためである.これは、同じ値をメモリに割り当てることによるメモリの浪費を減らすためです.