В Python есть два оператора == и is , которые используются для сравнения. Может показаться, что они работают одинаково, но это не так.
✏️ Оператор == проверяет равенство значений, то есть он оценивает, являются ли значения двух объектов одинаковыми. При этом сами объекты могут храниться в совершенно разных ячейках памяти.
lst1 = [1, 2, 3]
lst2 = [1, 2, 3]
lst3 = lst1
print(lst1 == lst2) # True
print(lst1 == lst3) # True
print(lst2 == lst3) # True
print(id(lst1) == id(lst2)) # False
print(id(lst1) == id(lst3)) # True
print(id(lst2) == id(lst3)) # False
📚 С другой стороны, оператор is проверяет идентичность, то есть он определяет, указывают ли две переменные на один и тот же объект в памяти. При таком варианте сравнения важно, чтобы совпали не сами значения, которые хранятся в объектах, а номера ячеек в памяти.
lst1 = [1, 2, 3]
lst2 = [1, 2, 3]
lst3 = lst1
print(lst1 is lst2) # False
print(lst1 is lst3) # True
print(lst2 is lst3) # False