[Python-Dev] Informal educator feedback on PEP 572 (was Re: 2018 Python Language Summit coverage, last part)
tim.peters at gmail.com
Wed Jun 27 12:51:35 EDT 2018
> However, PEP 572 in its current form takes the position "parent local
> scoping is sufficiently useful to make it a required pre-requisite for
> adding assignment expressions, but not useful enough to expose as a
> new scope declaration primitive",
Of course the PEP doesn't take that position at all: it doesn't even
contain the term "parent local scoping". That's your term, which nobody
else uses unless they're replying to you ;-)
What the PEP does say:
an assignment expression occurring in a list, set or dict comprehension or
in a generator expression (below collectively referred to as
"comprehensions") binds the target in the containing scope, honoring a
nonlocal or global declaration for the target in that scope, if one exists.
For the purpose of this rule the containing scope of a nested comprehension
is the scope that contains the outermost comprehension. A lambda counts as
a containing scope.
It's a small collection of plainly stated rules for specifying the intended
semantics. If you want to claim that this _is_ "useful enough to expose as
a new scope declaration primitive", it's really on you to present use cases
to justify that claim. I'd present some for you, but I don't have any (I
don't care that "by hand" conversion of nested comprehensions to workalike
Python nested functions may require a bit of thought to establish the
intended scope of assignment expression target names - all of which is
easily doable without adding any new statements).
I don't _expect_ that other good use cases exist. The gimmick's purpose is
to make code that visually _appears_ to belong to a block act as if
embedded assignments do occur in that block. If there's an explicitly
nested function, that fundamental motivation no longer applies.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Python-Dev