[Python-ideas] for/else syntax

Yuvgoog Greenle ubershmekel at gmail.com
Sat Oct 3 15:30:55 CEST 2009


It just hit me. The for...else is so cryptic because of one big issue
- the "else".

Consider the following code:

for obj in iterable:
    if found_it(obj):
        # Found what we were looking for!
        break
if not break:
    # It wasn't there :(

Similarly for while loops:

while self.more_points_to_check():
    if self.found_it():
        # Found the desired point
        break
if not break:
    # Exhausted the search space :(


Notice how readable and beautiful the code has become. We have 2
implementation options:
1. an "if" that comes immediately after a for/while can have the
special keywords "not" or "break".
2. the for/while syntax has an optional "if break" or "if not break".

I'd like to hear if people like this idea and if so, which of the 2
options do you like better.


Check it out, there's no need for a syntax error because it's so
obviously wrong:

for item in list_of_items:
    process(item)
if not break:
    do_something()


Also, now that the syntax is generic, you can add on to it whatever
you like. For example:

for item in list_of_items:
    process(item)
    if item.is_gold():
        break
    if item.is_silver():
        break
if break and searching_for_metals:
    celebrate(list_of_items)

--yuv



More information about the Python-ideas mailing list