Possible Duplicate:
Python ‘==’ vs ‘is’ comparing strings, ‘is’ fails sometimes, why?
Is
a == b
the same as
a is b
?
If not, what is the difference?
Edit: Why does
a = 1
a is 1
return True, but
a = 100.5
a is 100.5
return False?
No, these aren't the same. is
is a check for object identity - ie, checking if a
and b
are exactly the same object. Example:
a = 100.5
a is 100.5 # => False
a == 100.5 # => True
a = [1,2,3]
b = [1,2,3]
a == b # => True
a is b # => False
a = b
a == b # => True
a is b # => True, because if we change a, b changes too.
So: use ==
if you mean the objects should represent the same thing (most common usage) and is
if you mean the objects should be in identical pieces of memory (you'd know if you needed the latter).
Also, you can overload ==
via the __eq__
operator, but you can't overload is
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With