Use of a variable in parent loop

Terry Reedy tjreedy at udel.edu
Sun Sep 27 11:35:24 EDT 2020


On 9/26/2020 3:36 PM, Stephane Tougard via Python-list wrote:
> On 2020-09-26, Terry Reedy <tjreedy at udel.edu> wrote:
>> Noise.  Only 'pass' when there is no other code.
> 
> Why ?

> 
> I use pass and continue each time to break a if or a for because emacs
> understands it and do not break the indentation.
> 
> Is there any other instruction to end a if than pass and ensure Emacs
> does not break the indentation during a copy paste or an indent-region ?

Emacs should come with python.el or python-mode.el defining a 
python-mode.  Are you using it?  I presume it understands python block 
structure without extra passes.

emacs with python-mode has been and likely still is used by some 
experienced python programmers. I have never seen anyone but a rank 
beginner misunderstanding 'pass' misusing it as an end-block marker. 
(Ditto for putting ';' at the end of every line.)  Dedents or EOF do that.

if a:
     b = 3
     pass
     c = 5
else:
     b = 1
     c = 2

The 'pass' line does not mark the end of the if block.

>> Aside from not breaking most every existing Python program?  If block
>> scoped, one would have to add an otherwise useless fake declaration
>> before the block to use the name outside the block.  Python tries to
>> avoid boilerplate code.
> 
> I'm not talking about a general change in Python as a language, I'm
> talking about a module who would enforce a block namespace as it works with
> C or Perl (and many).

The existence of a permanent alternate syntax mechanism would be a 
general change to the language.

Python only has a temporary overlap mechnism:

from __future__ import new_syntax.

This gives people usually 2 versions to adjust to a new syntax that 
breaks compatibility by switching to the new syntax anytime before it 
becomes mandatory.

For example, making 'with' a keyword broke any other use of the word. 
So people temporarily had to add
from __future__ import with_statement
at the top of a file to use with statements in that file.

-- 
Terry Jan Reedy



More information about the Python-list mailing list