Python报错TypeError: 'NoneType'不可迭代,求修复方案
解决TypeError: 'NoneType' object is not iterable的问题
问题分析
你遇到的这个错误根源很明确——你的reset_cart函数没有返回任何值。在Python里,如果函数没有写return语句,默认会返回None;而你试图把None解构赋值给多个变量,None不是可迭代对象,自然就触发了这个TypeError。
看你的reset_cart代码,它只完成了变量初始化,但完全没有把这些变量传递出去,所以调用reset_cart(beta)得到的结果是None,根本没法拆分成你需要的8个值。
修复方案
只需要在reset_cart函数末尾加一条return语句,把所有需要的变量以元组形式返回即可:
def reset_cart(beta): pre_s=1 s=1 pre_a=-1 a=-1 x = 0 x_dot = 0 theta = 0 theta_dot = 0.01 # 新增return语句,返回所有需要的变量 return pre_s, s, pre_a, a, x, x_dot, theta, theta_dot # 现在调用就能正常解构赋值了 [pre_s, s, pre_a, a, x, x_dot, theta, theta_dot] = reset_cart(beta)
小补充
其实Python里解构赋值更惯用的写法是省略方括号,直接写成:
pre_s, s, pre_a, a, x, x_dot, theta, theta_dot = reset_cart(beta)
两种写法功能完全一致,只是这种更贴合Python的编码习惯。
内容的提问来源于stack exchange,提问作者Stevy KUIMI
相关产品推荐
相关产品推荐

