Identity vs Equality in Python
Satellite · Operators
Identity vs Equality
Identity compares object references; equality compares values. Mixing them up causes head-scratching bugs.
Examples
a = [1, 2]
b = [1, 2]
c = a
a == b # True
a is b # False
a is c # True
Use == when values matter; use is for singleton objects.
Singletons
NoneTrue/FalseEllipsis,NotImplemented
Check them with is:
if value is None:
...
Custom classes
Override __eq__ and __hash__ to control equality semantics. Identity remains object reference (id(obj)).