非类型错误,Python

非类型错误,Python,python,return,iterable,nonetype,Python,Return,Iterable,Nonetype,我要走了 TypeError: 'NoneType' object is not iterable 在这一行: temp, function = findNext(function) 也不知道为什么会失败。我正在while循环中使用函数: while 0 < len(function): … 无法理解为什么它认为我在迭代这些对象之一。语句: return 'somestring',function[1:] 实际上是返回一个长度为2的元组,元组是iterables。更惯用

我要走了

TypeError: 'NoneType' object is not iterable 
在这一行:

temp, function = findNext(function) 
也不知道为什么会失败。我正在while循环中使用函数:

while 0 < len(function):
    …
无法理解为什么它认为我在迭代这些对象之一。

语句:

return 'somestring',function[1:]
实际上是返回一个长度为2的元组,元组是iterables。更惯用的说法是这样写:

return ('somestring', function[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
def findNext(函数): ... 如果函数=='y': ... 返回'somestring',函数[1:] ... >>>函数='x' >>>打印(findNext(功能)) 没有一个 >>>温度,函数=findNext(函数) 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 TypeError:“非类型”对象不可编辑
解决方法是总是返回一些东西。

你的问题很难理解,因为你给出了这么小的代码片段。请看,好的,我已经在我的代码中改变了这一点,但是我怎样才能让元组与它返回的变量结合起来呢?我必须说temp=tuple[0]\n function=tuple[1]吗?我不明白这个问题。您在
temp,function=findNext(function)
行中正确地进行了“元组解包”,但我猜您没有始终如一地解包。很难用你给出的一小段代码来判断。很抱歉,我在避免粘贴整个内容,因为它有很多重复的if语句,但我可以向你保证解包是一致的。你答对了,我问的是拆包的事。当它不起作用时,我首先要寻找的是包装和开箱的一致性。非常感谢你的帮助。太好了!非常感谢你!我忘了在结尾放一个通俗易懂的返回!
>>> 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