<div dir="auto"><div><div class="gmail_extra"><div class="gmail_quote">On Nov 28, 2017 12:32 AM, "Steven D'Aprano" <<a href="mailto:steve@pearwood.info">steve@pearwood.info</a>> wrote:<br type="attribution"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="quoted-text">On Tue, Nov 28, 2017 at 06:15:47PM +1300, Greg Ewing wrote:<br>
> Steven D'Aprano wrote:<br>
> >How does "stop iterating here" equate to a wildcard?<br>
><br>
> The * means "I don't care what else the sequence has in it".<br>
><br>
> Because I don't care, there's no need to iterate any further.<br>
<br>
</div>I'll grant you that. But I don't see how that relates to being a<br>
wildcard. I'm not seeing the connection. I mean, you wouldn't interpret<br>
<br>
   from module import *<br>
<br>
to mean "I don't care what's in the module, so don't bother importing<br>
anything" would you? So the concept of wildcard here seems to be the<br>
opposite to its use here:<br>
<br>
- in imports, it means "import everything the module offers";<br>
- in extended iterable unpacking, it means "collect everything";<br>
<br>
both of which (to me) seem related to the concept of a wildcard; but in<br>
this proposed syntax, we have<br>
<div class="quoted-text"><br>
   x, y, * = iterable<br>
<br>
</div>which means the opposite to "collect everything", instead meaning<br>
"collect nothing and stop".<br>
<br>
Anyway, given that * = is visually ambiguous with *= I don't think this<br>
syntax is feasible (even though * = is currently a syntax error, or at<br>
least it is in 3.5).<br></blockquote></div></div></div><div dir="auto"><br></div><div dir="auto"><span style="font-family:sans-serif">If not already considered, what if the RHS had to be explicitly unpacked?</span><div dir="auto" style="font-family:sans-serif"><br></div><div dir="auto" style="font-family:sans-serif">Something like:<div dir="auto"><div dir="auto"><br></div><div dir="auto">a, b, c = *iterator</div><div dir="auto"><br></div><div dir="auto">Which would essentially be:</div><div dir="auto"><br></div><div dir="auto">a, b, c = (*iterator,)</div><div dir="auto"><br></div><div dir="auto">This enables lazy assignment by default but `*` can force complete expansion (and exact matching) of the RHS.</div><div dir="auto"><br></div><div dir="auto">It's a breaking change, but it does have a straightforward fix (simply wrap and unpack any relevant RHS).</div><div dir="auto"><br></div><div dir="auto">Thanks,</div><div dir="auto"><br></div><div dir="auto">-- </div><div dir="auto"><br></div><div dir="auto">C Anthony</div></div></div></div></div>