一句话解决方案
出现这样的问题,一般的从两个方面排查:
1.检查所有的for循环里的list是否存在None
2.检查所有调用function返回多个参数的场景,检查该function的内部是否有分支,每个分支是否都有返回值
验证
# coding: utf-8
value = 0
def test():
if value == 1:
a = b = 1
return a, b
def case1():
a, b = test()
print a
def case2():
items = None
for item in items:
print item
if __name__ == '__main__':
print case2()
报错信息:
TypeError: 'NoneType' object is not iterable
总结
- 'NoneType' object is not iterable最常见的出错场景是for循环里的list是None
- 将None赋给多个值时,也会出现提示:TypeError: 'NoneType' object is not iterable
- 函数返回值一定要考虑到条件分支的覆盖
- 在没有return语句时,python默认会返回None
case1是比较容易忽视的
所以如果出现该错误,应该从以上两种场景去排查,是否有None值被用来循环,调用的函数是否有分支,以及是否每个分支都有返回值等。
来源:站长平台