TypeError: ‘NoneType’ object is not iterable in Python

In Python, iteration is normally performed on the sequences such as list, dict, set, tuple, etc. For iterating an object, it is necessary to have some values. This is because the iteration does not perform on the “None” value. When iteration is performed on the “None” value, the “object is not iterable” error occurs in the program.

This Python write-up will provide a comprehensive guide on how to resolve the “NoneType object is not iterable” error using the following aspects:

Reason 1: Iterating None Value

The foremost reason which causes this error is when the user tries to iterate the none value in Python. The none object is not iterable, as we can see in the below snippet:

The above snippet shows “TypeError” because the for loop iterates over the none value.

Solution: Check None Value Before Iteration

To resolve this error, you need to check the value using the “if-else” statement whether it is none or not.

Consider the following code as an example:

Code:

value = None
if value is not None:
    for z in value:
        print(z)
else:
    print('Variable Stores None Value')

In the above code, “if” and “is not” statements are used to determine whether the input variable is equal to “None” if the value is not “None”, then the “if” block is executed. Otherwise, the else block.

Output:

The input variable is set to ” None “, so the else block displays the output above.

Reason 2: Iterating Function That Returns None

Another similar reason in a program is when a user tries to iterate on the function that returns the “None” value.

The above snippet shows “TypeError” because the user-defined function will return the “None” value.

Solution: Use return Statement

To resolve this error, you need to return any value back to the function using the “return” statement. The code example is shown in the below snippet:

Code:

def myfunction():
    return("Python")

exp = myfunction()
for i in exp:
    print(i, end="")

In the above code, the “return” statement returns the string value “Python” back to the function. So the “for” loop iterates over the function string value and does not return any “TypeError”.

Output:

The above output shows the function return value “Python” while performing iteration using the “for” loop.

Reason 3: Function With False Condition Return None Value

It is also possible that this “TypeError” will occur when a condition is defined within the function, and the condition becomes false. So the false condition in a function will return a “None” value, as we can see in the below snippet:

The above snippet shows the error because the “for” loop iterates over the “None” value.

Solution: Return Empty List

To fix this error in a program, we passed an empty list after the conditional statement block. Here is an example:

Code:

def example():
    num = 54
    num1 = 117
    if num > num1:
        return "True"
    return []
   
exp = example()
for i in exp:
    print(i, end = "")

In the above code, the “empty list” is created after the “if” block. So, when the condition of the “if” statement becomes false, the return statement will return an empty list that will resolve the “TypeError”.

Output:

The above output is empty because the function condition becomes false, and the result returns statement will be an “empty list [ ]”.

Conclusion

The “TypeError: NoneType object is not iterable” occurs when a user tries to iterate the “None” value or tries to iterate on the function that returns the “None” value. To resolve this error, Python checks the value before iteration using an “if-else” statement. The error was also resolved using the “return” keyword in the user-defined function. This article has presented a detailed guide on resolving “NoneType object is not iterable” errors in Python.