Test for object identity should be is

Testing the identity of two objects can be achieved in python with a special operator called is. Most prominently it is used to check whether a variable points to None. But the operator can examine any kind of identity. This often leads to confusion because equality of two different objects will return False.

Anti-pattern

a = range(10)
b = range(10)

print((a is b))

This code snippet will print False even though a and b have equal values. This can occur because a and b are references that point to different objects which happen to have the same value. To verify the equality of two variables the == operator should be used.

Best practice

Only use the is operator if you want to check the exact identity of two references.

some_list = None

if some_list is None:
    do_somthing_with_the_list()