[Python-ideas] How assignment should work with generators?

Paul Moore p.f.moore at gmail.com
Thu Nov 30 14:19:30 EST 2017


On 30 November 2017 at 16:16, Steve Barnes <gadgetsteve at live.co.uk> wrote:
> I had a sneaky feeling that it did, which raises the question of what
> the bleep this enormous thread is about, since the fundamental syntax
> currently exists....

Essentially, it's about the fact that to build remainder you need to
copy all of the remaining items out of the RHS. And for an infinite
iterator like count() this is an infinite loop.

There's also the point that if the RHS is an iterator, reading *any*
values out of it changes its state - and
    1. a, b, *remainder = rhs therefore exhausts rhs
    2. a.b = rhs reads "one too many" values from rhs to check if
there are extra values (which the programmer has asserted shouldn't be
there by not including *remainder).

Mostly corner cases, and I don't believe there have been any
non-artificial examples posted in this thread. Certainly no-one has
offered a real-life code example that is made significantly worse by
the current semantics, and/or which couldn't be easily worked around
without needing a language change.

Paul


More information about the Python-ideas mailing list