replacing `else` with `then` in `for` and `try`

bartc bc at freeuk.com
Wed Nov 1 21:42:00 EDT 2017


On 02/11/2017 01:06, Steve D'Aprano wrote:
> On Thu, 2 Nov 2017 08:12 am, Alexey Muranov wrote:
>>> Hello,
>>>> what do you think about the idea of replacing "`else`" with "`then`" in
>> the contexts of `for` and `try`?
>>> Yes, this, exactly!!!
>> (For while and for loops, but not try -- see below.)
>> I have argued this for many years. The current choice of "else" is painfully
> misleading, and it causes people (including myself) to wrongly guess that
> the "else" block runs only if the for/while block doesn't run at all:
>>> # This is wrong!
> for x in sequence:
> ...
> else:
> print("sequence is empty")
>>> The actually semantics of "else" is that the block is UNCONDITIONALLY run
> after the for/while loop completes,

/If/ it completes, and /when/ it completes. Otherwise why bother with 
using 'else'? Just have the code immediately following the loop.
And there are some circumstances where the 'else' part is never executed.
But if people prefer a different keyword, then why not? I think 'then' 
can be used, without impacting its use as an identifier, because it will 
always be followed by ":". Of course you would need to allow both "else" 
and "then" for backwards compatibility.
-- 
bartc


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /