[Python-ideas] PEP 572: Statement-Local Name Bindings
Ethan Furman
ethan at stoneleaf.us
Sat Mar 3 14:59:35 EST 2018
On 03/02/2018 11:11 PM, Nick Coghlan wrote:
> On 3 March 2018 at 03:51, Ethan Furman wrote:
>> Ah, right. Since the PEP primarily covers comprehensions, but then went on to discuss multi-line statements, I had
>> forgotten the comprehension part. The answer is easy: assignment expressions in comprehensions stay inside
>> comprehensions, just like other inner comprehension variables already do (function sub-scope, after all). Thank you
>> for pointing that out.
>
> That wasn't the point I was try to make: my attempted point was that I see allowing an expression like "print((f() as
> x), x^2, x^3)" to overwrite the regular function local "x" as being just as unacceptable as "data = [x^2 for x in
> sequence]" overwriting it, and we already decided that the latter was sufficiently undesirable that we were willing to
> break backwards compatibility in order to change it.
I think I explained myself poorly. I'm agreeing with you, and pointing out that the (var as expr) syntax /inside/ a
comprehension would stay inside a comprehension, i.e. not leak out to locals(), just like your "x" above.
--
~Ethan~
More information about the Python-ideas
mailing list