2

私は得ています

TypeError: 'NoneType' object is not iterable 

この行で:

temp, function = findNext(function) 

なぜこれが失敗しているのか分かりません。while ループで関数を使用しています。

while 0 < len(function):
    …

しかし、それを繰り返していません。のすべてのリターンはfindNext(function)ほとんど

return 'somestring',function[1:]

なぜ私がそれらのオブジェクトの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 に答える