В чем разница в использовании между is и ==?
1. ==
— сравнение значений (equality)
==
— сравнение значений (equality)Проверяет, равны ли значения объектов.
Вызывает метод
__eq__
объекта.Даже если объекты разные в памяти, но содержат одинаковые данные —
==
вернётTrue
.
a = [1, 2, 3]
b = [1, 2, 3]
print(a == b) # True (списки с одинаковым содержимым)
2. is
— сравнение идентичности (identity)
is
— сравнение идентичности (identity)Проверяет, являются ли два имени ссылками на один и тот же объект в памяти.
Сравнивает
id(a)
иid(b)
.
a = [1, 2, 3]
b = a
print(a is b) # True (ссылаются на один объект)
print(a == b) # True (и значения одинаковы)
3. Пример, когда ==
и is
различаются
==
и is
различаютсяx = [1, 2, 3]
y = [1, 2, 3]
print(x == y) # True (одинаковые данные)
print(x is y) # False (разные объекты в памяти)
💡 В автотестах часто встречается:
# Хорошо
if result is None:
...
# Плохо (работает, но менее читаемо)
if result == None: # noqa: E711
...
PreviousКак работают dict comprehension, list comprehension и set comprehension?NextЧто такое *args, **kwargs?
Last updated
Was this helpful?