Skip to main content

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

  • None
  • True / False
  • Ellipsis, 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)).

Next up in your learning path