[Tutor] Unexpected iterator
Dave Angel
davea at ieee.org
Thu Nov 12 16:33:41 CET 2009
Jeff R. Allen wrote:
> Hello,
>
> I am working my way through the tutorial, and I like trying
> variations, just to see what expected errors look like, and other ways
> things could be written.
>
> I tried a, b = 0, 0 and that worked.
>
> Then I tried this to (maybe) set both a and b to 0:
>
>
>>>> a, b = 0
>>>>
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> TypeError: 'int' object is not iterable
>
> I understand why it doesn't work, but I don't understand the wording
> of the exception. Could someone explain how I accidentally introduced
> iteration into the picture with my syntax? I have a feeling there's an
> interesting lesson hidden in this example...
>
> Thanks.
>
> -jeff
>
>
What you've really got going across the = sign is a list, or something
like it. On the left side, you have exactly two items, so on the right
side you need a list or tuple of length 2. In your first example, you
have a tuple, because of the comma.
The generalization implied above is an iterable. Lists and tuples are
iterables, but you could also use a generator, for example. Anything
that you could iterate over, such as with a for statement.
a, b, c, d = xrange(4)
Anyway, in your second example, the system is trying to interpret the
right side as an iterable, in order to get two items from it.
DaveA
More information about the Tutor
mailing list