TypeError: ‘NoneType’ object is not iterable

Estimated reading time: 2 minutes

Have you wondered why you cant iterate over a NoneType but never had it properly explained? Read on as here we will fully explain the concept and how you can fix it.

So what is a NoneType anyway?

First of all, to understand a none type, you need to understand what none is.

None is essentially no value, so in other words, nothing is present. It differs from the integer zero, as the integer zero is an actual value and it exists.

If you were to put both of them side by side on a database table, one would be empty the other would have a value of zero.

Also, None is a type in itself:

a = None
print(a)
print(type(a))

Gives the output:

None
<class 'NoneType'>

Whereas zero is an integer datatype:

a = 0
print(a)
print(type(a))

Giving output:
0
<class 'int'>

So how does a none type object is not iterable occur?

Let’s take an example and walk through it. In the below code we have a variable that is empty. In other words, we are asking the program to loop through something that does not exist and does not have any values.

a = None
print(a)
print(type(a))

for i in a:
   print(i)

Giving output:
for i in a:
TypeError: 'NoneType' object is not iterable
None
<class 'NoneType'>

Repeating what we said above, it is not possible to loop through something that does not have a value.

But if we change it to a string value of ‘1’, the loop will work.

a = '1'
print(type(a))

for i in a:
   print(i)

So in summary:

(A) NoneTypes are useful if you just want to return an empty value or check for an empty value.

(B) You cannot loop over NoneTypes as they do not have any values, they are empty!

Leave a Reply

Your email address will not be published. Required fields are marked *