Python None vs. False: A Complete Guide

In Python, None is an object implemented by the NoneType class.

>>> type(None)
<class 'NoneType'>

In Python, None represents an absence of a value in a variable. In Python, None is what would be a null in other commonly used programming languages.

Unlike the null in the other languages, Python’s None has nothing to do with values 0 or False for example.

>>> None == False
>>> None == 0

In this guide, you will learn how the None object compares with the:

  • 0 integer
  • False boolean
  • Null notion
  • Undefined” notion
  • NoneType class

None vs 0 in Python

In Python, None is not the same as 0.

The difference between None and 0 in Python is that:

  • None object is implemented by the NoneType class. There is only one None object in your program.
  • 0 is an integer object implemented by the int class. There can be many integer objects in Python.

None vs False in Python

In Python, None has nothing to do with the boolean value False.

  • None in Python is actually an object implemented by NoneType class.
  • False is a boolean object implemented by the bool class.

The only way None and False are related in Python is that the truth value of None is False. This means when you convert None to a boolean, you get a False:

>>> None == False
>>> bool(None) == False

None vs Null in Python

In Python, there is no such thing as null. Python’s version of null is the None object. Thus a technical comparison between a null and a None is meaningless.

In some other common programming languages, null or null pointer is used to denote an empty variable. A null pointer does not point to anything. Oftentimes a null is defined to be a 0 in those languages.

However, in Python, there is no null pointer. Instead, there is a None object that is used for the same purpose. Unlike in other programming languages with null pointers, Python’s None object is a valid object. This means it is not 0, False, or anything like that. It is a special None object.

Sometimes you hear developers talking about null in Python. In reality, they are referring to None objects.

None vs Undefined in Python

In Python, the concept of undefined is blurry.

When a Python variable is None, you could loosely say it is undefined. But technically, it is not. This is because, under the hood, None is a well-defined object implemented by the NoneType class in Python.

Let’s see what happens when we create an “undefined” variable by assigning None to it:

>>> num = None
>>> type(num)
<class 'NoneType'>
>>> id(num)

Here you can see that the type of the “undefined” num object is NoneType. Furthermore, it also has an ID as it points to a specific part of the memory. So even though num is None, it is still a very well-defined Python object.

None vs NoneType in Python

In Python, None is an object implemented by the NoneType class.

In other words, the difference between None and NoneType in Python is that:

  • None is a Python object.
  • NoneType is a class that implements the None object.


Today you None compares with other similar objects in Python.

To recap, None is the “Python’s null“. It represents “undefined” variables that have no value.

In Python, None has nothing to do with values 0 or False.

Loosely speaking, an undefined variable is something whose value is None. But None is also a valid Python object which is well defined. Thus None does not technically mean undefined.

Scroll to Top