is None or == None ?

John Machin sjmachin at
Fri Nov 6 15:09:03 CET 2009

On Nov 7, 12:35 am, "Alf P. Steinbach" <al... at> wrote:
> * mk:
> > Hello,
> > Some claim that one should test for None using:
> > if x is None:
> > ..but the standard equality which is theoretically safer works as well:
> > if x == None:
> > So, which one is recommended?
> As I understand it, 'is' will always work and will always be efficient (it just
> checks the variable's type),

It doesn't check the type. It doesn't need to. (x is y) is true if x
and y are the same object. If that is so, then of course (type(x) is
type(y)) is true, and if not so, their types are irrelevant. "is"
testing is very efficient in the CPython implementation: addressof(x)
== addressof(y)

More information about the Python-list mailing list