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

Find Item in a List

How to quickly find something in a collection of items, like a list or a range? When a generator expression is a great solution, and when it's not?

Inlining Functions

Running one big blob of code is often faster than splitting your code into well-separated functions. But there are other ways you can improve the speed of your code without sacrificing its readability.

Ask for Forgiveness or Look Before You Leap?

Is it faster to "ask for forgiveness" or "look before you leap" in Python? And when it's better to use one over the other?


Previous:
WTF Excel?!