On 27 June 2018 at 23:38, Greg Ewing <greg.ew...@canterbury.ac.nz> wrote: > Nick Coghlan wrote: >> >> actually made those semantics available as an explicit >> "parentlocal NAME" declaration ...: >> >> def _list_comp(_outermost_iter): >> parentlocal item >> _result = [] >> for x in _outermost_iter: >> item = x >> _result.append(x) >> return _result >> >> _expr_result = _list_comp(items) > > > I'm not sure that's possible. If I understand correctly, > part of the definition of "parent local" is that "parent" > refers to the nearest enclosing *non-comprehension* scope, > to give the expected result for nested comprehensions. > If that's so, then it's impossible to fully decouple its > definition from comprehensions.
I'm OK with a target scope declaration construct having lexical-scope-dependent behaviour - exactly what "nonlocal NAME" will do depends on both the nature of the current scope, and on which names are declared as local in which outer scopes, and that's also implicitly the case for all name lookups. 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", and I've come to the view that it really is the "A+B=MAGIC!" aspect of the current proposal that bothers me, whereas "A+B implies C for <pragmatic reasons>" doesn't bother me any more than the implicit non-local references introduced as part of the original lexical scoping changes bother me. Cheers, Nick. -- Nick Coghlan | ncogh...@gmail.com | Brisbane, Australia _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com