Аватарка пользователя Елена Капаца
Елена Капаца

В чем разница между is() и == в Python?

Разберемся, чем отличаются операторы в сравнения в Python и в каких случаях стоит использовать каждый из них.

6394

Операторы is и == в Python выполняют похожие функции, но работают немного по-разному. И если вы новичок, используете сравнения в коде, стоит понимать разницу. Это поможет реже прибегать к рефакторингу и дебагу.

Оператор ==

== проверяет, равны ли значения двух операндов. В данном контексте — переменных, занимающих разные ячейки памяти. 

			>>> 1 == 1

True

>>> 'abc' == 'abc'

True

>>> [1, 2, 3] == [1, 2, 3]

True
		

Этот оператор можно использовать для сравнения практически любых объектов: строк, списков, словарей и кортежей. Это делает его очень частым «гостем» в инструкциях if-else. К тому же, когда через неделю свой код воспринимать становится сложнее, всего два символа в операторе упрощают чтение длиной в сотни строк. 

Оператор is()

is() проверяет, являются ли два операнда одним и тем же объектом, то есть указывают ли они на один и тот же объект в памяти.

			>>> a = [1, 2, 3]

>>> b = a

>>> a is b

True
		

В этом случае a и b указывают на один и тот же список, поэтому a is b возвращает True.

			>>> a = [1, 2, 3]

>>> b = [1, 2, 3]

>>> a is b

False
		

Здесь a и b указывают на разные списки (несмотря на то, что их значения идентичны), поэтому a is b возвращает False.

Обычно is в Python используется для проверки идентичности объектов. Он может быть полезен, когда необходимо убедиться, что две ссылки указывают на один и тот же объект в памяти, а не просто имеют одинаковое значение. Однако, в большинстве случаев, достаточно использовать ==.

Какие еще объекты в Python путают? Поделитесь мнением в комментариях.

Следите за новыми постами по любимым темам

Подпишитесь на интересующие вас теги, чтобы следить за новыми постами и быть в курсе событий.

Для начинающих
Python
6394
Что думаете?
8 комментариев
Сначала интересные
Аватар пользователя Константин Осипов
Просто и доступно. Для новичка понятно. Спасибо большое!
Аватар пользователя Александр Высоков
Ну зачем писать такой примитив, хотябы про кеширование бы добавили, а то так ещё своей статьей и примерами в заблуждение ввели
Аватар пользователя Марина Александровна
Александр Высоков, "примитив" пишется для тех, кто предпочитает обучаться поэтапно. Каждая статья должна отвечать на один конкретный запрос пользователя.
Аватар пользователя Павел К
Ну и не только объекты в памяти, а например принадлежность к определённому типу для случаев с None и Boolean (true, false)
Показать все комментарии