"is not" operator?
MRAB
python at mrabarnett.plus.com
Thu Jul 8 22:02:36 EDT 2010
sturlamolden wrote:
> What happens here? Does Python (2.6.5) have an "is not" operator?
>
>>>> a = 5
>>>> print (a is not False)
> True
>>>> print (a is (not False))
> False
>>>> print (not (a is False))
> True
>
> It seems "y is not x" fits well with spoken English, but it is also a
> bit surprising that "y is not x" does not mean "y is (not x)" but "not
> (y is x)". Why does Python reorder is and not operators, and what are
> the formal rules for this behavior?
>
In English the negative comes after the verb (or the auxiliary, if there
is one), so:
x is not y
If you wanted to abbreviate:
x is in y
the natural result would be:
x in y
and the opposite:
x is not in y:
would be abbreviated to:
x not in y
The resulting inconsistency in Python is somewhat unfortunate, but in
practice it's not a problem because:
not y
returns either False or True, and how often would you write:
x is False
or:
x is True
?
More information about the Python-list
mailing list