The Equality operator (==) compares the values of both the operands and checks for value equality. Whereas the ‘is’ operator checks whether both the operands refer to the same object or not.
# python3 code to
# illustrate the
# difference between
# == and is operator
# [] is an empty list
list_1 = []
list2 = []
list3=list_1
if (list_1 == list2):
print("True")
else:
print("False")
if (list_1 is list2):
print("True")
else:
print("False")
if (list_1 is list3):
print("True")
else:
print("False")
list3 = list3 + list2
if (list_1 is list3):
print("True")
else:
print("False")
Output:
True
False
True
False
- The output of the first if the condition is “True” as both list_1 and list2 are empty lists.
- Second, if the condition shows “False” because two empty lists are at different memory locations. Hence list_1 and list2 refer to different objects. We can check it with id() function in python which returns the “identity” of an object.
- The output of the third if the condition is “True” as both list_1 and list3 are pointing to the same object.
- The output of the fourth if the condition is “False” because the concatenation of two lists always produces a new list.
list_1 = []
list2 = []
print(id(list_1))
print(id(list2))
Output:
139877155242696
139877155253640
This shows list_1 and list2 refers to different objects.