2014-12-20 3 views
0

Почему строковые литералы Unicode показывают разные идентификаторы? Я надеялся на то же поведение, что и в строковых литералах.Почему id() для тех же строковых литералов в Юникоде дает отличный результат?

>>> p = 'abcd' 
>>> q = 'abcd' 
>>> id(p) == id(q) 
True 
>>> p = u'abcd' 
>>> q = u'abcd' 
>>> id(p) == id(q) 
False 

Просьба указать некоторые рекомендации по этому вопросу.

ответ

0

По этой же причине два dict с таким же содержимым будут иметь разные id s: это разные объекты. Я подозреваю, что строковые литералы не-Юникода, являющиеся одним и тем же объектом, являются чем-то вроде оптимизации.