python报错如下:TypeError: cannot unpack non-iterable NoneType object解决方法:报错的原因是函数返回值得数量不一致,查看函数返回值数量和调用函数时接收返回值的数量是不是一致,修改一致即可...
写了一个测试,个人理解这样的问题是因为将
Non
e值多次赋给某个值。测试如下
1. 该段代码没有写else。
python
在 if 语句无else的情况下返回的值为
Non
e,由于是无迭代的返回(
non
-
iterable
)因此可以运行
flag = False
在输入bert-serving-start -model_dir chinese_L-12_H-768_A-12 -num_worker 1 -max_seq_len 64的情况下报出
TypeError
:Cannot un
pack
non
-
iterable
NoneType
object
的错误
查看启动路径是否正确,-model_dir
此时,异常会定位到由 Fun(1)这一行产生。原因是:
1、满足条件的分支没有显式返回值时,
Python
默认会返回
Non
e; 2、当if条件不满足,并且没有else语句时;函数会默认返回
Non
e。
调用时,将
Non
e赋给多个值时,会出现提示:
TypeError
: ‘
NoneType
’
object
is not iterabl
分析:这个bug有几个奇怪的地方:
1、网络在训练的时候,出现了loss = inf 的情况,是在epoch = 1 的中间部分,出现了loss = inf 的情况,接下来的每一轮都是loss = inf的情况;
2、网络训练到一半突然报错;
3、报错的问题,根据网上的解决方法并没有解决。
Debug的思路:
1、之前网络复现的时候,是可以训练结束的,同时得到相应的结果。 但是我也发现了一些问题,就是loss也是inf,但是可以得到相应的结果。 因为
Traceback (most recent call last):
File "D:/pytest/thread_test/subprocess_pipe.py", line 5, in <module>
a,b = test()
TypeError
: cannot un
pack
non
-
iterable
int
object
很明显是函数返回参数个数
1.保证TensorFlow版本不要太高,不能是2.x的版本,本人安装1.15.0版本有效
2.保证numpy版本不能过高,本人安装1.16.0版本有效
3.保证在main函数内运行,即if __name__== '__main__':下运行
必须保证三个条件均满足
Python
关于
Non
e的报错:'
NoneType
'
object
is not
iterable
和cannot un
pack
non
-
iterable
NoneType
object
关于
Non
e值的报错
一、
TypeError
:‘
NoneType
’
object
is not
iterable
(Type错误:'
NoneType
’对象不是可迭代的)
原因:遍历的对象为
Non
e 。
items =
Non
e
for item in items:
print(item)
Traceback (most recent call last):
File ...
TypeError
: cannot un
pack
non
-
iterable
int
object
报错如下原因分析
TypeError
: cannot un
pack
non
-
iterable
int
object
函数返回值得数量不一致,检查函数返回值数量以及调用函数返回值数量,并确保一致即可。
或许大家会用到 if 语句,这时需要检查 if 与 else 下的 返回值数量 是否一致,不一致也会报错。如下所示action, value = self.best_action(state)