[Python-ideas] SyntaxWarning for for/while/else without break or return?

Steven D'Aprano steve at pearwood.info
Fri Oct 9 04:53:12 CEST 2009


On Fri, 9 Oct 2009 03:19:35 am Stephen J. Turnbull wrote:
> Masklinn writes:
>  > Both would, because in both cases the `else:` clause serves no
>  > purpose whatsoever. It's noise.
>
> Tut, tut.  In Nick's proposal, both would raise because there is an
> "else:" but there is no break.  I doubt the Python compiler would add
> the editorial comment about "noise," though.<wink>

But that's exactly what it is doing, even if it doesn't use the 
word "noise". It's making an editorial judgement that perfectly legal 
code that does exactly what it is meant to do is somehow "bad" and 
requires a warning.

If I see a message SyntaxWarning('for...else with no break'), my 
immediate response is "Yes, so what?". The code runs, it runs 
correctly.

People write code incrementally. A for...else block that ends up 
including a break may go through many edit-compile-run cycles before 
the break actually gets inserted. I shouldn't have to add a 
spurious "if False: break" to shut the compiler up during those 
incremental edits.



-- 
Steven D'Aprano



More information about the Python-ideas mailing list