Behavior of the for-else construct

Cameron Simpson cs at cskk.id.au
Sat Mar 5 17:18:23 EST 2022


On 05Mar2022 17:48, Avi Gross <avigross at verizon.net> wrote:
>Since we still seem to be dreaming, I wonder when someone will suggest using some variation of the new match statement.

Ugh :-)

But...

What if break were implemented with an exception, like StopIteration but 
for interruption instead of stop? And for-loops were an implied 
try/except:

    for ...
    except BrokenIteration: # <-- implied
      pass

and you could go:

    for ...
    except BrokenIteration:
      ... a break occurred
    else:
      ... a break did not occur

and, indeed,

    for ...
    except BrokenIteration:
      ... a break occurred
    except StopIteration as stopped:
      print("I did", stopped.count, "iterations")
    else:
      # not reached because of the "except StopIteration" above
      ... a break did not occur

if we wanted to cover off the count iterations wish item.

Cheers,
Cameron Simpson <cs at cskk.id.au>


More information about the Python-list mailing list