Python关于None的报错:'NoneType' object is not iterable和cannot unpack non-iterable NoneType object
最新推荐文章于 2023-03-10 13:54:25 发布
2019-07-23 10:29:08

一、TypeError:‘NoneType’ object is not iterable(类型错误:'NoneType’对象不是可迭代的)

原因 :遍历的对象为 None 。

items = None
for item in items:
    print(item)
 

Traceback (most recent call last):

File “d:\Projects\Python\PythonCrawler\weibo_ajax\test.py”, line 2, in

​ for item in items:

TypeError: ‘NoneType’ object is not iterable

解决方法(先判断迭代对象是否为空):

items = None
if items:
    for item in items:
        print(item)

二、TypeError: cannot unpack non-iterable NoneType object(类型错误:无法解包非迭代的NoneType对象)

原因:将单个 None 赋给了多个值。

value = 0
def test():
    if value == 1:
        a = b = 1
        return a, b
a, b = test()
print(a, b)
 

Traceback (most recent call last):

File “d:\Projects\Python\PythonCrawler\weibo_ajax\test.py”, line 10, in

​ a, b = test()

TypeError: cannot unpack non-iterable NoneType object

首先,要知道 python 中每个函数在没有确定的 return 语句时,都是默认返回 None。因此,在上述例子中函数 test() 不满足 if 条件判断,所以最后返回的是默认的 None ,然后又把单个 None 赋值给 a,b ,所以就报错了。

解决方法(加上else判断):

value = 0
def test():
    if value == 1:
        a = b = 1
        return a, b
    else:
        return 1, 2
a, b = test()
print(a, b)

注意:else 的 return 可以返回任意类型,但必须返回两个,否则还会报错。

TypeError: 'NoneType' object is not iterable  这个错误提示一般发生在将None赋给多个值时。?12345def myprocess():    a == b       if a != b:                          return True, value; flag, val = myprocess()  在判断语句中,当if条... print(a,b) 定义一个变量str1值为None,然后将str1的值赋予a、b两个值,然后打印出a,b的值,这时就会报“'NoneType' object is not iterable”的错误。这个问题常会出现在条件判断中,例如下面的代码中,只有if判断,当不满足num==1的条件时,函数默认返回No 的原因在于,最终所被调用的函数所返回的值,和返回值赋值给的变量,不匹配。 此处即为,最终所调用的函数是extractBlogUser,其return为空,所以把返回的空的值,赋值给 (extractOK, extractedBlogUser, generatedBlogEntryUrl) 才会出现类型错误TypeError,才会提示NoneType,即extractBlogUser所return回来的No. 1.TypeError: 'NoneType' object is not iterable 原因:data 内容为空 1.2 挑选头条里的几个人物,发现还挺有意思的。建议文案工作者爬爬数据,就看看文案也蛮好的。 2.现在进行测试:手动更改参数格式vs利用notepad++列模式更改 2.1 个人猜测是tab键的原因 2.2于是自己开始大胆假设,小心求证, 发现显示space和tab 键, 数字之间空余的都是space,说明不关tab的事 3. 总结:机器在识别的过程中,对特定标签有要求. 比如 x,y,z = func1();这里有一个隐式的解构操作;如果func1没有返回值,这里就可能会有一个NoneType类型的返回值。就会出现标题里的错误。TypeError: cannot unpack non-iterable NoneType object这个错误的意思是;例如,显示的,将timeArray的前六个元素解构出来,作为datetime的参数。对非元组(迭代)类型NoneType,不能做解构操作;还有一种显示的解构操作符: * 星号。 执行这段测试程序会报错:“TypeError: ‘NoneTypeobject is not iterable” 这里是没有考虑到else的情况,在if条件不满足时,函数默认返回No... 写了一个测试,个人理解这样的问题是因为将None值多次赋给某个值。测试如下 1. 该段代码没有写else。python在 if 语句无else的情况下返回的值为None,由于是无迭代的返回(non-iterable)因此可以运行 flag = False 报错有很多个版本,并且经常在路径错误、返回值错误这样的场合发生,其它的博文都是说在做cv的时候自己的图片路径配置错了导致类似的报错,我想提醒大家遇到这样的,首先应该耐心通过调试器去查看变量,进而快速找到原因!在进行分布式机器学习的训练时,遇到一个非常奇怪的BUG,上一个版本的代码还能够正常运行,然而在这一个版本,只要运行,就会报错。究其原因,只能说一个:装饰器把函数应有的返回值吞掉了!发生错误的代码是一个pytorch加载模型参数的句子,都正常,但是在回到主程序的时候,变量。结果在调试的时候发现,函数。