[Python-ideas] Nudging beginners towards a more accurate mental model for loop else clauses

Nick Coghlan ncoghlan at gmail.com
Fri Jun 8 13:53:03 CEST 2012

On Fri, Jun 8, 2012 at 7:44 PM, Rob Cliffe <rob.cliffe at btinternet.com> wrote:
> I think a better scheme would be to have more meaningful keywords or
> keyword-combinations, e.g.
> for x in iterable:
>    # do stuff
> ifempty:  #  or perhaps ifnoiter: (also applicable to while loops)
>    # do stuff
> #ifbreak:
>    # do stuff
> #ifnobreak:
>    # do stuff
> which would give all the flexibility while making it reasonably clear what
> was happening.

The way to be clear would actually be to drop the feature altogether
(as Guido has noted in the past). Then TOOWTDI becomes:

    x = _no_data = object()
    result = _not_found = object()
    for x in iterable:
        if acceptable(x):
            result = x
    if x is _no_data:
        # No data!
    if result is _not_found:
        # Nothing interesting!
    # Found a result, process it

That's never going to happen in Python though, due to backwards
compatibility requirements.

FWIW, I wrote an essay summarising some of the thoughts presented in
these threads:


Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia

More information about the Python-ideas mailing list