Форум сайта python.su
Подскажите пожалуйста.
У меня программа реализующая электронную подпись Эль-Гамаля при сравнении полученной и вычисленной подписи при использовании “is” говорит что подписи не совпадают, хотя выведенные в консоль они равны.
При использовании “==” всё работает нормально.
Офлайн
>>> a = 1234
>>> b = a
>>> a is b
True
>>> b += 0
>>> a is b
False
>>>a==b
True
>>>
a is b
id(a) == id(b)
Отредактировано (Ноя. 24, 2010 07:00:28)
Офлайн
Спасибо.
То есть is сравнивает объекты по указателю, точнее, их уникальные идентификаторы, в то время как “==” сравнивает их значения(если они сравнимы) независимо от расположения?
Офлайн
Есть нюанс:
In [1]: a = 1
In [2]: b = a
In [3]: a is b
Out[3]: True
In [4]: b +=0
In [5]: a is b
Out[5]: True
Офлайн
Ясно.
Блин, уже полтора года на питоне пишу, а только сейчас узнал.
Как-то не возникало ситуаций где is и == ведут себя по разному.
Офлайн