easy question on parsing python: "is not None"
Rhodri James
rhodri at wildebst.demon.co.uk
Thu Aug 5 19:15:38 EDT 2010
On Thu, 05 Aug 2010 17:07:53 +0100, wheres pythonmonks
<wherespythonmonks at gmail.com> wrote:
> Well, I am not convinced of the equivalence of not None and true:
>
>>>> not None
> True
>>>> 3 is True;
> False
>>>> 3 is not None
> True
>>>>
You're not testing for equivalence there, you're testing for identity.
"is" and "is not" test whether the two objects concerned are (or are not)
the same object. Two objects can have the same value, but be different
objects. The interpreter can fool you by caching and reusing objects
which have the same value when it happens to know about it, in particular
for small integers, but this is just a happy accident of the
implementation and in no way guaranteed by the language. For example:
>>> "spam, eggs, chips and spam" is "spam, eggs, chips and spam"
True
>>> a = "spam, eggs, chips and spam"
>>> b = "spam, eggs, chips and spam"
>>> a is b
False
>>> a == b
True
Also, remember that "is not" is a single operator, *not* the concatenation
of "is" and "not". Your last test is probably not checking what you think
it is :-)
>>> 3 is (not None)
False
--
Rhodri James *-* Wildebeest Herder to the Masses
More information about the Python-list
mailing list