== Оператор сравнивает по проверке равенства: если эти объекты Python мы сравнили их с тем, мы получили Оба объекта равны как ответ.
это Оператор, однако, сравнивает удостоверение личности: если мы сравним наш Объекты с оператором IS, мы получили Это два разных объекта как ответ.
Давайте посмотрим на какой-то настоящий код Python.
>>> a = [1, 2, 3] >>> b = a
Давайте проверим эти две переменные. Мы можем видеть, что они указывают на идентичные списки:
>>> a [1, 2, 3] >>> b [1, 2, 3]
Поскольку два объекта списка выглядят одинаково, мы получим ожидаемый результат, когда мы сравним их для равенства, используя:
>>> a == b True
Однако это не говорит нам, на самом деле указывает A и B на один и тот же объект. Конечно, мы знаем, что они потому, что мы назначили их ранее, но предположим, что мы не знали – как мы можем узнать?
Ответ состоит в том, чтобы сравнить оба переменных с помощью оператора. Это подтверждает, что обе переменные на самом деле указывают на один объект списка:
>>> a is b True
Посмотрим, что произойдет, когда мы создаем идентичную копию нашего объекта списка. Мы можем сделать это путем вызова списка () в существующем списке, чтобы создать копию, которую мы называем C:
>>> c = list(a)
Опять же, вы увидите, что новый список, который мы только что создали, выглядит идентичным объекту списка, указанного на A и B:
>>> c [1, 2, 3]
Сейчас это где это становится интересным. Давайте сравним наш список Copy C с исходным списком A Использование. Какой ответ вы ожидаете увидеть?
>>> a == c True
Хорошо, я надеюсь, что это было то, что вы ожидали. Этот результат говорит нам, что C и A имеют одинаковое содержимое. Они считаются равными Python. Но на самом деле ли они указывают на тот же объект? Давайте узнаем с оператором:
>>> a is c False
Это где мы получаем другой результат. Python говорит нам, что C и A указывают на два разных объекта, хотя их содержимое может быть одинаковым.
Заключение:
- Экспрессия «is» оценивает true, если две переменные указывают на тот же (идентичный) объект.
- Выражение «==» оценивает true, если объекты, упомянутые переменными, равны (имеют одинаковое содержимое).
Оригинал: “https://dev.to/yusufadel/object-comparisons-is-vs-4oba”