​this email have                 ever deliberately taken advantage of the limited Python                 3 scope in comprehensions and generator expressions to                 use what would otherwise be a conflicting local variable                 name?​                                                  

I did:

    for l in (l.rstrip() for l in f):
    
    The provisional unstripped line variable is totally unneeded in the     following code.
    
                                            
              
              
                         
              I appreciate that                 the scope limitation can sidestep accidental naming                 errors, which is a good thing.
                         
              
              
                         
              Unfortunately,                 unless we anticipate Python 4 (or whatever) also making                 for loops have an implicit scope, I am left wondering                 whether it's not too large a price to pay. After all,                 special cases aren't special enough to break the rules,                 and unless the language is headed towards implicit scope                 for all uses of "for" one could argue that the scope                 limitation is a special case too far. It certainly                 threatens to be yet another confusion for learners, and                 while that isn't the only consideration, it should be                 given due weight.
                                              
             
      _______________________________________________ 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/vano%40mail.mipt.ru          
    --  Regards, Ivan    ">

(original) (raw)

On 26.06.2018 0:13, Steve Holden wrote:
On Mon, Jun 25, 2018 at 8:37 PM, Terry Reedy <tjreedy@udel.edu> wrote:
On 6/24/2018 7:25 PM, Guido van Rossum wrote:
I'd wager that the people who might be most horrified about it

the (b) scoping rule change

would be people who feel strongly that the change to the
comprehension scope rules in Python 3 is a big improvement,

I might not be one of those 'most horrified' by (b), but I increasingly don't like it, and I was at best -0 on the comprehension scope change. To me, iteration variable assignment in the current scope is a non-problem. So to me the change was mostly useless churn. Little benefit, little harm. And not worth fighting when others saw a benefit.

However, having made the change to nested scopes, I think we should stick with them. Or repeal them. (I believe there is another way to isolate iteration names -- see below). To me, (b) amounts to half repealing the nested scope change, making comprehensions half-fowl, half-fish chimeras.
​\[...\]​
\--
Terry Jan Reedy

​I'd like to ask: how many readers of ​
​this email have ever deliberately taken advantage of the limited Python 3 scope in comprehensions and generator expressions to use what would otherwise be a conflicting local variable name?​

I did:

for l in (l.rstrip() for l in f):

The provisional unstripped line variable is totally unneeded in the following code.


I appreciate that the scope limitation can sidestep accidental naming errors, which is a good thing.

Unfortunately, unless we anticipate Python 4 (or whatever) also making for loops have an implicit scope, I am left wondering whether it's not too large a price to pay. After all, special cases aren't special enough to break the rules, and unless the language is headed towards implicit scope for all uses of "for" one could argue that the scope limitation is a special case too far. It certainly threatens to be yet another confusion for learners, and while that isn't the only consideration, it should be given due weight.


\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_  
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/vano%40mail.mipt.ru  

--   
Regards,  
Ivan