[Python-ideas] How assignment should work with generators?
Kirill Balunov
kirillbalunov at gmail.com
Mon Nov 27 07:31:38 EST 2017
> In terms of language proposals, you can't just say "don't need values
> for"; the semantics have to be EITHER "consume and discard" OR "don't
> consume". We already have a perfectly good way of spelling "consume
> and discard":
>
> x, y, _ = iter
>
You mean ( x, y, *_ = iter ) ?
Since this has to be about non-consumption of the generator/iterator,
> Ellipsis cannot be a zero-length deque. Thus this syntax would have to
> be restricted to the *last* entry, and it then means "don't check for
> more elements".
>
Yes, you are right to the *last* entry. (*last* depends on proposed syntax
(spelling)).
> The proposed semantics, if I understand you correctly, are:
>
> try:
> _iter = iter(it)
> x = next(_iter)
> y = next(_iter)
> except StopIteration:
> raise ValueError
> # no "else" clause, we're done here
>
Yes, "roughly" this semantics is proposed, with some assumptions on _iter =
iter(it).
As I can see at the moment, these cases should behave differently:
>>> x, y = [1,2,3,4] # must raise ValueError
>>> x, y = iter([1,2,3,4]) # should work
But at the same time, it violates current situation. So maybe, as you have
said we need special syntax. I will think about it.
> Start by perusing PEP 1, and the template in PEP 12:
>
> https://www.python.org/dev/peps/pep-0001/
> https://www.python.org/dev/peps/pep-0012/
>
> The PEP editors (myself included) are here to help you; don't hesitate
> to reach out with questions.
>
Thank you!
With kind regards, -gdg
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20171127/6918bccc/attachment.html>
More information about the Python-ideas
mailing list