is is identity testing, == is equality testing. what happens in your code would be emulated in the interpreter like this:
is
==
>>> a ='pub'>>> b =''.join(['p','u','b'])>>> a == b True>>> a is b False