[Python-ideas] for/else syntax

Yuvgoog Greenle ubershmekel at gmail.com
Fri Oct 2 17:42:48 CEST 2009


On Fri, Oct 2, 2009 at 5:35 PM, Steven D'Aprano <steve at pearwood.info> wrote:
>
> I disagree that it makes sense. Why raise a SyntaxWarning for legal
> code? Shall we raise SyntaxWarning for the following as well?
>
> #1
> pass
> pass
>
> #2
> if False:
>    parrot()
>
> #3
> for x in []:
>    do_something()
>
> #4
> try:
>    something()
> except Exception:
>    raise
>

All of your examples do exactly what they appear to do. The for...else
construct that has no "break" appears to do something, yet does
nothing. I beg of you to try out "The Question Challenge" I posted
earlier. It's a win-win situation for you.

If you're still not convinced, check out this code that is legal, yet
appears to do something that it doesn't:

try:
    z = math.sqrt(x / y)
except ZeroDivisionError, ValueError:
    print("Math error, try again")


That's a real life mistake many have seen occur. Python 3 fixed this
in a very elegant way. Now let's talk python 4.



More information about the Python-ideas mailing list