[Python-ideas] for/else syntax

Steven D'Aprano steve at pearwood.info
Fri Oct 2 16:35:50 CEST 2009


On Fri, 2 Oct 2009 09:01:20 pm Nick Coghlan wrote:
> Yuvgoog Greenle wrote:
> > 1. Not allowing a for loop that has no "break" to have an "else".
> > Just like "else" isn't allowed when there isn't an "except" in the
> > "try". There really is no excuse, justification or sense in a "for"
> > loop that has no "break" yet has an "else".
>
> As Stephen said, that's a very good point. Having the compiler issue
> a SyntaxWarning when compiling such code is perfectly possible and
> would make a great deal of sense (and probably prevent many cases of
> naive misuse).

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

etc. There are all sorts of code which is legal but does nothing. Why 
should the language single out one of them for a warning? If that 
warning is anywhere, it should be in PyLint or equivalent.

It's even more problematic when you consider code where the break is 
inside a "if __debug__" clause. Then you've code which raises a warning 
when you run with the -O flag, and doesn't when you run without.



-- 
Steven D'Aprano



More information about the Python-ideas mailing list