"'int'对象是不可迭代的"

ape*_*x39 1 python iteration integer ipython

def rect_extend(x):
  m, n = 1
  while 1 < x:
    m = m + 1
    n = n + 1
  return m, n
Run Code Online (Sandbox Code Playgroud)

这个简单的函数返回:

'int'对象不可迭代

iPython中的错误.我不知道它为什么这样做,while功能不起作用 - 条件似乎是true.

(虽然条件是故意简化的;原始代码没有它)

Bur*_*lid 6

当你这样做时m, n = 1称为元组解包,它的工作原理如下:

>>> m, n = ('a','b')
>>> m
'a'
>>> n
'b'
Run Code Online (Sandbox Code Playgroud)

既然1是一个整数而不是一个元组,你会得到这个奇怪的错误; 因为Python无法"逐步"(或迭代)整数来解压缩它.这就是为什么错误是'int'对象不可迭代的原因

  • 您链接的文档称为*sequence*unpacking而不是*tuple*unpacking,强调RHS不一定是一个元组.并且它也不必是一个序列 - 它可以是具有正确数量的元素的任何迭代. (2认同)