<div dir="ltr"><div class="gmail_default" style="color:rgb(0,0,0)"><span style="color:rgb(34,34,34)">On Wed, Jun 27, 2018 at 9:27 AM Paul Moore <<a href="mailto:p.f.moore@gmail.com">p.f.moore@gmail.com</a>> wrote:</span><br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">From my reading, PEP 572 takes the position that "parent local<br>
scoping" is what people expect from assignment expressions *in<br>
comprehensions* and it's useful enough that there is no reason not to<br>
make that the behaviour. The behaviour isn't generally useful enough<br>
to be worth exposing as a primitive (it's not even useful enough for<br>
the PEP to give it an explicit name!) so it's just a special case for<br>
assignment expressions in comprehensions/generators.<br></blockquote><div><br></div><div class="gmail_default" style="color:rgb(0,0,0)">​So, my interpretation is that it will behave like this?</div><div class="gmail_default" style="color:rgb(0,0,0)"><br></div><div class="gmail_default"><font color="#000000">x = 2</font></div><div class="gmail_default"><font color="#000000">y = [x := 3 for i in range(1)]</font></div><div class="gmail_default"><font color="#000000">print(x)</font></div><div class="gmail_default"><font color="#000000">3</font></div><div class="gmail_default"><font color="#000000"><br></font></div><div class="gmail_default"><font color="#000000">def f():</font></div><div class="gmail_default"><font color="#000000">    x = 4</font></div><div class="gmail_default"><font color="#000000">    y = [x := 5 for i in range(1)]</font></div><div class="gmail_default"><font color="#000000">    print(x)</font></div><div class="gmail_default"><font color="#000000">f()</font></div><div class="gmail_default"><font color="#000000">5</font></div><div class="gmail_default"><font color="#000000"><br></font></div><div class="gmail_default"><font color="#000000">class C:</font></div><div class="gmail_default"><font color="#000000">    x = 6</font></div><div class="gmail_default"><font color="#000000">    y = [x := 7 for i in range(1)]</font></div><div class="gmail_default"><font color="#000000">    print(x)</font></div><div class="gmail_default"><font color="#000000">C()</font></div><div class="gmail_default"><font color="#000000">6</font></div><div class="gmail_default"><font color="#000000">print(x)</font></div><div class="gmail_default"><font color="#000000">7</font><span style="color:rgb(0,0,0)">​</span></div></div></div>