Compare to None

How do we check if something is None?

With the beauty of the Python language - the code that you would write is literally the same as the above question:

if something is None:

It reminds me of this joke:

- How do you turn pseudocode into Python?
- You add .py at the end of the file.

There is another way in which we could make this comparison:

if something == None:

However, it doesn't make sense to use the second variant. None is a singleton object - there can't be two different None objects in your code. Each time you assign None to a variable, you reference the same None:

>>> a = None
>>> b = None
>>> c = None
>>> a is b is c
True

To compare the identity, you should use is, rather than ==, as I explained in the Checking for True or False article. It's clearer and faster:

$ python -m timeit -s "a = 1" "a is None"
50000000 loops, best of 5: 8.2 nsec per loop

$ python -m timeit -s "a = 1" "a == None"
20000000 loops, best of 5: 13 nsec per loop

As you can see, == is 60% slower than is (13 / 8.2 ≈ 1.59).

Similar posts

How to Benchmark (Python) Code

There are plenty of ways to measure the speed of your code. Let me show you a few that I considered for the Writing Faster Python series.

Automatically Reload Modules with %autoreload

Tired of having to reload a module each time you change it? %autoreload to the rescue!

IPython Startup Files

How you can automatically run Python scripts when starting IPython and why this can be useful?


Previous:
WTF Excel?!