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!