Why does comparing strings using either ‘==’ or ‘is’ sometimes produce a different result?

is is identity testing, == is equality testing. what happens in your code would be emulated in the interpreter like this:

>>> a="pub"
>>> b = ''.join(['p', 'u', 'b'])
>>> a == b
True
>>> a is b
False

so, no wonder they’re not the same, right?

In other words: a is b is the equivalent of id(a) == id(b)

Leave a Comment