2

我越来越

TypeError: 'NoneType' object is not iterable 

在这条线上:

temp, function = findNext(function) 

并且不知道为什么会失败。我在 while 循环中使用函数:

while 0 < len(function):
    …

但我没有遍历它。所有的回报findNext(function)都差不多

return 'somestring',function[1:]

并且无法理解为什么它认为我正在迭代其中一个对象。

4

2 回答 2

1

我猜那findNext会掉到最后而没有返回任何东西,这使它自动返回None。有点像这样:

>>> def findNext(function):
...     if function == 'y':
...         return 'somestring',function[1:]
...
>>> function = 'x'
>>> print(findNext(function))
None
>>> temp, function = findNext(function)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not iterable

解决方案是总是返回一些东西。

于 2013-09-10T22:51:20.243 回答
0

该声明:

return 'somestring',function[1:]

实际上是返回一个长度为 2 的元组,并且元组是可迭代的。将该语句写为:

return ('somestring', function[1:])

这使得它的元组性质更加明显。

于 2013-09-10T21:54:25.143 回答