On Fri, Nov 27, 2020 at 01:17:07PM +1300, Greg Ewing wrote:
> On 27/11/20 2:25 am, Steven D'Aprano wrote:
> >Block scoping adds semantic and implementation complexity and annoyance,
> >while giving very little benefit.
> 
> Yet in *certain situations* it seems that block scoping
> is what people subconsciously assume. For example, loop
> variables in list comprehensions, the leaking of which
> unsettled enough people that it got changed.

I was one of those people who *liked* the fact that list comp variables 
leaked :-)

I've come around to accept that it's okay that they don't, and that 
conceptually comprehensions feel like a self-contained scope, more like 
a function than an ordinary expression. Especially since the walrus 
operator now allows me to leak variables out of a comprehension if I 
really need to.

We can have too many scopes as well as too few:

- a single process-wide global scope is too few;

- every (sub-)expression being its own scope is too many;

so we're just arguing about where the Goldilocks Zone is. My argument is 
that it is *function scope*, with comprehensions considered to be an 
honorary function for that purpose.



-- 
Steve
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/7XAI65SZITBYJHIOTGC3ECOZPZ6ACWKM/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to