Python 3.8中已做类型检查仍出现TypeError: 'NoneType'对象不可迭代问题求助
解决TypeError: 'NoneType' object is not iterable的问题
嘿,我一眼就发现问题出在你的类型检查逻辑上啦!
你写的判断条件if type(order['shipmentItems']) is not None:完全达不到你想要的效果——因为type()函数返回的是对象的类型,比如当order['shipmentItems']是None时,type()返回的是NoneType这个类型对象,而不是None本身。所以这个条件永远为True,哪怕shipmentItems确实是None,代码还是会走进循环,自然就抛出TypeError了。
修正方案
直接检查shipmentItems的值是否为None就可以了:
print(type(order)) print(len(order)) if order['shipmentItems'] is not None: for item in order['shipmentItems']: # 你的业务逻辑
如果想更稳妥,还可以同时检查它是否是可迭代对象(避免出现其他非迭代类型导致报错):
from collections.abc import Iterable print(type(order)) print(len(order)) if order['shipmentItems'] is not None and isinstance(order['shipmentItems'], Iterable): for item in order['shipmentItems']: # 你的业务逻辑
另外你提到循环之前执行过一次,那大概率是第一次处理的order中shipmentItems是有效的可迭代对象(比如列表),但后续的order里这个字段变成了None,这时候你的错误检查没拦住,就触发了报错。
内容的提问来源于stack exchange,提问作者zcstover
相关产品推荐
相关产品推荐

