python 'is not' operator
I notice there is a comparison operator is not
. Should I literally translate it into
!=
instead of
== not
To expand on what Ignacio said:
a == b
and a != b
test whether two objects have the same value. You can override an object's __eq__
and __ne__
methods to determine what that means.
a is b
and a is not b
test whether two objects are the same thing. It's like doing id(a) == id(b)
It's not relational comparison, it's identity. And it translates to not (A is B)
.
python 2.7.3 documentation, 5.9. Comparisons:
The operators <, >, ==, >=, <=, and != compare the values of two objects.
and about operator is in the same chapter:
The operators is and is not test for object identity: x is y is true if and only if x and y are the same object. x is not y yields the inverse truth value.
A != B
means that "A is not equal to B", not "A is equal to not B".