<div dir="ltr"><div class="gmail_extra"><span class="gmail-im"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-m_-8574241141481102466gmail-">
> To show this on simple example:<br>
><br>
> >>> from itertools import count, islice<br>
> >>> it = count()<br>
> >>> x, y = it<br>
> >>> it<br>
> count(3)<br>
<br>
</span>For everyone else who was confused by this, as I was, that's not<br>
actually a copy and paste from the REPL. There should be a ValueError<br>
raised after the x, y assignment. As given, it is confusing because it<br>
looks like the assignment succeeded, when in fact it didn't.<br>
<span class="gmail-m_-8574241141481102466gmail-"><br>
<br>
> Here the count was advanced two times but assignment did not happen.<br>
<br>
</span>Correct, because there was an exception raised.<span class="gmail-m_-8574241141481102466gmail-"><br></span></blockquote><div><br></div></span><div>Sorry for that, <span id="gmail-m_-8574241141481102466gmail-result_box" class="gmail-m_-8574241141481102466gmail-" lang="en"><span class="gmail-m_-8574241141481102466gmail-">I did not want to embarrass anyone, so I wrote below that the assignment did not happen.</span> <span class="gmail-m_-8574241141481102466gmail-">But probably the code should speak for itself, especially if it looks like a copy from REPL</span></span> </div><span class="gmail-im"><div> <span class="gmail-m_-8574241141481102466gmail-"></span><br><span class="gmail-m_-8574241141481102466gmail-"></span></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
if isinstance(it, collections.abc.Iterator):<br>
    # special case for iterators<br>
    x, y = it<br>
else:<br>
    # sequences keep the old behaviour<br>
    x, y = it[:2]<span class="gmail-m_-8574241141481102466gmail-"><br></span></blockquote><div><br></div></span><div>No, it can be simply x, y = iter(it) <br></div><span class="gmail-im"><div> <span class="gmail-m_-8574241141481102466gmail-"></span><span class="gmail-m_-8574241141481102466gmail-"></span><br><span class="gmail-m_-8574241141481102466gmail-"></span></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-m_-8574241141481102466gmail-">
> Cons:<br>
>     1. A special case of how assignment works<br>
>     2. As with any implicit behavior, hard-to-find bugs<br>
<br>
</span>Right. Hard-to-find bugs beats any amount of convenience in the<br>
interactive interpreter. To use an analogy:<br>
<br>
"Sure, sometimes my car suddenly shifts into reverse while I'm driving<br>
at 60 kph, sometimes the engine falls out when I go around the corner,<br>
and occasionally the brakes catch fire, but gosh the cup holder makes it<br>
really convenient to drink coffee while I'm stopped at traffic lights!"<span class="gmail-m_-8574241141481102466gmail-"><br></span></blockquote><div><br></div></span><div> :-)  <span class="gmail-m_-8574241141481102466gmail-"><br></span></div><span class="gmail-im"><div><span class="gmail-m_-8574241141481102466gmail-"></span><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Perhaps a better idea might be special syntax to tell the interpreter<br>
you don't want to run the right-hand side to completion. "Explicit is<br>
better than implicit" -- maybe something special like:<br>
<br>
x, y, * = iterable<br></blockquote><div><br></div></span><div>I wrote 
somewhere above, that "may be I like this form". But for me * '"starred"
 target implies -> collect something from iterable. So now I'm 
towards:</div><div><br></div><div>x, y, ... = iterable</div><div><br></div><div><span id="gmail-m_-8574241141481102466gmail-result_box" class="gmail-m_-8574241141481102466gmail-" lang="en"><span class="gmail-m_-8574241141481102466gmail-">But I have not summed up yet what pitfalls can be on this path.</span></span></div><div><span id="gmail-m_-8574241141481102466gmail-result_box" class="gmail-m_-8574241141481102466gmail-" lang="en"><span class="gmail-m_-8574241141481102466gmail-"></span></span><br><span id="gmail-m_-8574241141481102466gmail-result_box" class="gmail-m_-8574241141481102466gmail-" lang="en"><span class="gmail-m_-8574241141481102466gmail-"><span id="gmail-m_-8574241141481102466gmail-result_box" class="gmail-m_-8574241141481102466gmail-short_text" lang="en"><span class="gmail-m_-8574241141481102466gmail-">Thank you your remarks were very extensive!</span></span></span></span></div><div><span id="gmail-m_-8574241141481102466gmail-result_box" class="gmail-m_-8574241141481102466gmail-" lang="en"><span class="gmail-m_-8574241141481102466gmail-"><span id="gmail-m_-8574241141481102466gmail-result_box" class="gmail-m_-8574241141481102466gmail-short_text" lang="en"><span class="gmail-m_-8574241141481102466gmail-"><br></span></span></span></span></div><span id="gmail-m_-8574241141481102466gmail-result_box" class="gmail-m_-8574241141481102466gmail-" lang="en"><span class="gmail-m_-8574241141481102466gmail-"><span id="gmail-m_-8574241141481102466gmail-result_box" class="gmail-m_-8574241141481102466gmail-short_text" lang="en"><span class="gmail-m_-8574241141481102466gmail-">With kind regards, -gdg</span></span></span></span></div></div>