[Python-Dev] Issue #26204: compiler now emits a SyntaxWarning on constant statement (original) (raw)

Chris Angelico rosuav at gmail.com
Mon Feb 8 20:49:50 EST 2016


On Tue, Feb 9, 2016 at 12:41 PM, MRAB <python at mrabarnett.plus.com> wrote:

On 2016-02-09 00:53, Guido van Rossum wrote:

The warning for 'assert (cond, msg)' was specifically put in because this is a nasty trap. It's always a mistaken attempt to write 'assert cond, msg' -- usually in an attempt to break a long line without using a backslash. I'd actually consider promoting it to a syntax error rather than removing the warning. Compared to other "lint warnings" this one is much nastier -- it is also much more certain that it is a mistake. (Much more certain than e.g. an undefined variable, which could still be legitimate code due to dynamic updates to globals() or builtins.) Would there be less chance of confusion if there were some kind of syntax such as "assert cond with msg"?

Is assert the only statement that has a comma separating unrelated items? Every other statement that uses a comma is separating identical items (eg "import os, sys" - "os" and "sys" are equivalent), and tokens that have completely different meaning are separated by a word. The only other exception I can think of - pun intended - is the old "except BaseException, e:" syntax, which got dropped in Py3. Maybe it's time to introduce a new syntax with a view to deprecating the comma syntax ("use this old syntax if you need to support Python 2.7").

+1.

ChrisA



More information about the Python-Dev mailing list