[Python-3000] PEP 3132: Extended Iterable Unpacking
Steven Bethard
steven.bethard at gmail.com
Thu May 3 18:08:54 CEST 2007
On 5/3/07, Simon Percivall <percivall at gmail.com> wrote:
> On 2 maj 2007, at 20.08, Guido van Rossum wrote:
> > [Georg]
> >>>>>>> a, *b, c = range(5)
> >>>>>>> a
> >>>> 0
> >>>>>>> c
> >>>> 4
> >>>>>>> b
> >>>> [1, 2, 3]
> >
> > <snip>
> > That sounds messy; only allowing *a at the end seems a bit more
> > manageable. But I'll hold off until I can shoot holes in your
> > implementation. ;-)
>
> As the patch works right now, any iterator will be exhausted,
> but if the proposal is constrained to only allowing the *name at
> the end, wouldn't a more useful behavior be to not exhaust the
> iterator, making it similar to:
>
> > it = iter(range(10))
> > a = next(it)
> > b = it
>
> or would this be too surprising?
In argument lists, *args exhausts iterators, converting them to
tuples. I think it would be confusing if *args in tuple unpacking
didn't do the same thing.
This brings up the question of why the patch produces lists, not
tuples. What's the reasoning behind that?
STeVe
--
I'm not *in*-sane. Indeed, I am so far *out* of sane that you appear a
tiny blip on the distant coast of sanity.
--- Bucky Katt, Get Fuzzy
More information about the Python-3000
mailing list