<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body text="#330033" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">On 7/9/2018 8:43 PM, Guido van Rossum
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAP7+vJKGO3sVOPBzz84yJH-myB7=8LwzwakG2V=qXRrcBQRHAQ@mail.gmail.com">
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#330033" bgcolor="#FFFFFF"><span class="">
<blockquote type="cite">An exception to this special case
applies when the target name is the<br>
same as a loop control variable for a comprehension
containing it.<br>
This is invalid. This exception exists to rule out edge
cases of the<br>
above scope rules as illustrated by ``[i := i+1 for i in
range(5)]``<br>
or ``[[(j := j) for i in range(5)] for j in range(5)]``.
Note that<br>
this exception also applies to ``[i := 0 for i, j in
stuff]``, as well<br>
as to cases like ``[i+1 for i in i := stuff]``.</blockquote>
<br>
<br>
</span> It is unclear whether exactly what is invalid. Is the
use of the target name that is the same as (any of the nested)
loop control variable invalid? I think, from discussions, that
that is what is meant. But this paragraph could be interpreted
as meaning the special case doesn't apply, meaning that the
target name would be in a "sublocal" scope.<span class=""><br>
</span></div>
</blockquote>
<div><br>
</div>
<div>Really? If it didn't say "this is invalid" I could see that
"exception to the special case" might be interpreted as "the
special case doesn't apply". But with "This is invalid"
explicitly added I don't see how that interpretation could be
valid. Is it clearer if I changed that to "Such code is
invalid"? Or perhaps I should move "This is invalid" to the end
of the paragraph?</div>
</blockquote>
<br>
That's better; even better might be to say what is invalid...
instead of used pronoun.<br>
<br>
"Use of any of the comprension loop control variables as a target
name in an assignment expression is invalid."<br>
<br>
It isn't really an exception to the special case, it is an exception
to the general rule than any old name can be used as an assignment
expression target, IIUC.<br>
</body>
</html>