On 23/07/2020 16:24, Stephen J. Turnbull wrote:
Steven D'Aprano writes:
 > On Wed, Jul 22, 2020 at 06:14:39AM +0300, Paul Sokolovsky wrote:

 > > But no, loop executes, *or else* the following "else" block
 > > executes ;-).

He means the loop *suite* executes (this includes "getting to" a break
statement or other control flow that leaves the loop *statement*
entirely), and if it doesn't, the else suite does.  This is "why" such
nonlocal exits differ from finally in that they don't run the else suite.

I personally think this is a perfectly clear and convincing argument
for "else" as the keyword for this statement (once "suite" is added to
Paul's phrasing).

This is why programmers should major in English, and do a graduate
degree in programming if they really think they need a degree in
programming.


The upholders of the status quo regularly provide gallant explanations of why "else" is perfectly natural, even intuitive.
The fact is, it isn't.  If it were, it wouldn't *need* to be repeatedly explained by gurus to lesser mortals.  I can't think of any other area of Python that needs to be defended so regularly and so vociferously, nor that very experienced Python programmers confess they find confusing.  Swelp me, someone in this very thread (Barry) misunderstood it[1].  And suggesting that those of us who don't find it clear lack skill in English is just plain insulting.

YMMV, but the only way I can grok it when I see it is to mentally translate "else" to "if no break".  This is mental effort that would be spared or at least diminished if it were spelt in a more obvious way in the first place.

Best wishes
Rob Cliffe
[1] or at least I think he did, I had trouble understanding him.