快速定位python的Nonetype' object is not iterable

一句话解决方案

出现这样的问题,一般的从两个方面排查:

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

总结

  1. 'NoneType' object is not iterable最常见的出错场景是for循环里的list是None
  2. 将None赋给多个值时,也会出现提示:TypeError: 'NoneType' object is not iterable
  3. 函数返回值一定要考虑到条件分支的覆盖
  4. 在没有return语句时,python默认会返回None

case1是比较容易忽视的

所以如果出现该错误,应该从以上两种场景去排查,是否有None值被用来循环,调用的函数是否有分支,以及是否每个分支都有返回值等。

来源:站长平台

上一篇:在java中将元素添加到iterable中


下一篇:Promise