What is the difference between "is" and "==" in python?
operators, python
Solution
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`.
Problem
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?