2013-11-01 3 views
-2

Надеясь кто-то может объяснить следующее несоответствие:Python встроенный идентификатор() не соответствует:

>>> s1 = "Cyber security" 
>>> s2 = "Cyber security" 
>>> id(s1) == id(s1) 
True 
>>> id(s1) == id(s2) 
False 
>>> s1 = "cyber" 
>>> s2 = "cyber" 
>>> id(s1) == id(s2) 
True 
>>> s2 = "cyber " 
>>> s2 = "cyber " 
>>> id(s1) == id(s2) 
False 

Почему пространство сделать идентификатор() Ложные, но различные переменные без пробелов истинны?

+0

Примечание: несмотря на то, что вы видели тот же эффект, независимо от того, ваша транскрипция не показывает, что вы хотите, потому что вы не меняете 's1' в последней группе .. так что вы сравниваете' кибер "с" кибер ". – DSM

ответ

0

Из документации Python из id():

Это целое число (или длинное целое), которое гарантированно будет уникальным и постоянным для этого объекта в течение его жизни.

Нет абсолютно никаких гарантий, что два объекта будут иметь одинаковые id, на самом деле все наоборот.

Если вы хотите сравнить строки, сравните их напрямую.

Смежные вопросы