What this error means
You tried to use len() on None. The len() function only works on sequences (lists, strings, tuples) and collections (dictionaries, sets). None is not a sequence.
Common causes
- A function returned
Noneinstead of a list or other sequence. - You forgot to return a value from a function.
- A variable was set to
Nonewhen you expected a list or string.
Example that causes the error
def get_items():
items = [1, 2, 3]
# Forgot to return items
result = get_items()
length = len(result) # TypeError: result is None
How to fix it
Make sure your function returns the value:
def get_items():
items = [1, 2, 3]
return items # Return the list
result = get_items()
length = len(result) # OK: result is [1, 2, 3]
Check for None before using len()
result = some_function()
if result is not None:
length = len(result)
print(f"Length: {length}")
else:
print("Result is None, cannot get length")
Use try-except
result = some_function()
try:
length = len(result)
except TypeError:
print("Cannot get length of None")
length = 0 # Default value