Можно создать дубликат:
Python ‘==’ vs ‘is’ comparing strings, ‘is’ fails sometimes, why?Python: Разница между `is` и` == `?
В Python, в чем разница между этими двумя утверждениями:
if x is "odp":
if x == "odp":
Можно создать дубликат:
Python ‘==’ vs ‘is’ comparing strings, ‘is’ fails sometimes, why?Python: Разница между `is` и` == `?
В Python, в чем разница между этими двумя утверждениями:
if x is "odp":
if x == "odp":
==
В операторской проверке на равенство
The is
испытаний ключевых слов для идентичности объекта; говорим ли мы об одном и том же объекте. Обратите внимание, что несколько переменных могут ссылаться на один и тот же объект.
Оператор is
сравнивает идентификатор, а оператор ==
сравнивает значение. По существу x is y
такое же, как id(x) == id(y)
См here
Операторы является и не тест идентичности объекта: х у истинно тогда и только тогда, когда х и у того же объекта. х у не дает значение обратной истины
В целях реализации «ОРП» является плохим примером, но вы не должны использовать это, если вы не хотите, возможность двух одинаковых строк, чтобы оценить ложь:
>>> lorem1 = "lorem ipsum dolor sit amet"
>>> lorem2 = " ".join(["lorem", "ipsum", "dolor", "sit", "amet"])
>>> lorem1 == lorem2
True
>>> lorem1 is lorem2
False
Как уже говорилось, это проверка идентичности, а не равенства. В этом случае у меня есть две отдельные строки с одним и тем же содержимым. Однако, вы не должны зависеть от этого либо:
>>> odp1 = "odp"
>>> odp2 = "".join(["o", "d", "p"])
>>> odp1 == odp2
True
>>> odp1 is odp2
True
Другими словами, вы должны никогда использование для сравнения строк.
P.S. В Python 2.7.10 >>> odp1 is odp2
возвращает False.
dupe http://stackoverflow.com/questions/1504717/python-vs-is-comparing-strings-is-fails-sometimes-why – SilentGhost
@SilentGhost Я не согласен. Связанный вопрос содержит ответ на этот вопрос, но для тех, кто спотыкается о поиске относительно простого ответа на заданный здесь вопрос, связанный вопрос не будет казаться совершенно одинаковым. –
@David: и прошу прошу просить (совсем недавно), вы можете потратить * свое * время, чтобы найти, где это, вопросы, которые имеют одинаковые ответы, являются дубликатами в моей книге. – SilentGhost