【Python】 「==」 と 「is」 の違いについて
Pythonにおいてオブジェクト同士を比較する方法として、「==」と「is」がありますが、違いをいまいち把握しないまま使用して、痛い目を見たので備忘録として。
「==」について
「==」は2つのオブジェクトが等価かどうかを判断する。
obj1 = [1, 2, 3] obj2 = [1, 2, 3] obj1 == obj2 # True
「is」について
「is」はオブジェクトのidが同じかどうかを判断する。
obj1 = [1, 2, 3] obj2 = [1, 2, 3] obj1 is obj2 # False
まとめ
- 「==」:オブジェクトが等価かどうか
- 「is」: オブジェクトのidが同じかどうか
ちなみに、PEP8規約によるとNoneとの比較は「is」が推奨されているようです。