gotchapythonCriticalCanonical
Why does comparing strings using either '==' or 'is' sometimes produce a different result?
Viewed 0 times
eitherwhysometimesusingstringsdoesresultdifferentcomparingproduce
Problem
Two string variables are set to the same value.
If I open my Python interpreter and do the same
Why is this?
s1 == s2 always returns True, but s1 is s2 sometimes returns False.If I open my Python interpreter and do the same
is comparison, it succeeds:>>> s1 = 'text'
>>> s2 = 'text'
>>> s1 is s2
TrueWhy is this?
Solution
is is identity testing, and == 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
FalseSo, no wonder they're not the same, right?
In other words:
a is b is the equivalent of id(a) == id(b)Code Snippets
>>> a = 'pub'
>>> b = ''.join(['p', 'u', 'b'])
>>> a == b
True
>>> a is b
FalseContext
Stack Overflow Q#1504717, score: 1695
Revisions (0)
No revisions yet.