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

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


On Fri, 9 Oct 2009 12:15:10 am Masklinn wrote:
> The SyntaxWarning proposed would only be emitted on a `for: else:`  
> *without* a break as it's entirely equivalent to just deleting the  
> `else:` clause and dedenting the code it contains.

No entirely -- the compiler generates different byte-code.

> As far as outputting "spurious" messages in working programs, that's
> the point of a warning isn't it? Tell the programmer that something
> works, but might not do what one would like (or does nothing at all).

Heavens no!!! What on earth gives you that idea? How can the compiler 
possibly know what you would like? And even if it could, it's the 
compiler's job to enforce the rules of the language, not to satisfy 
what people would like.

Compiler warnings should never be spurious. Python warnings are used for 
meaningful warnings, such as deprecation warnings, not for stylistic 
ones like "by the way, you've used pass twice in a row, that's 
pointless". I don't want the compiler wasting my time with spurious 
warnings. If I want to run PyLint, I'll run PyLint. 

I don't want the compiler telling me I've defined a name and never used 
it, or declared a function that doesn't get called, or have code 
branches that can't possibly be taken, or anything else. I want it to 
compile, as fast as possible. The edit-compile-run cycle in Python is 
*very* lightweight, as it should be. When I want extra checking, I run 
PyLint, I don't want it every single time.




-- 
Steven D'Aprano



More information about the Python-ideas mailing list