[Python-Dev] A grammatical oddity: trailing commas in argument lists. (original) (raw)
Mark Dickinson dickinsm at gmail.com
Fri Jul 9 22:26:21 CEST 2010
- Previous message: [Python-Dev] A grammatical oddity: trailing commas in argument lists.
- Next message: [Python-Dev] A grammatical oddity: trailing commas in argument lists.
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Fri, Jul 9, 2010 at 8:37 PM, Dino Viehland <dinov at microsoft.com> wrote:
Terry wrote:
This violates the important principle that allowed def and call arg sequences should match to the extent sensible and possible. In this sense, the SyntaxError is a bug. So I would fix this now for 3.2 and notify the other implementors. +1 on fixing it - trailing commas are awesome. I'm always annoyed in C# where I frequently can't use them. This seems like a bug fix level change that should be easy for the other implementations to fix.
Thanks for all the feedback.
If the grammar is changed to allow "def f(*, a,): pass", that still leaves some more open questions: which of the following should be valid?
(1) def f(*args,): pass (2) def f(*kwargs,): pass (3) def f(,): pass
Just for the sake of simplicity it would seem to make sense allow all these, even if there's no obvious immediate use; for me, it keeps the mental footprint of the language small---I don't have to remember when the comma is or isn't allowed. Note that (1) and (2) aren't valid (and never have been, as far as I know) in Python 2.x, though. (Neither is (3), of course, since keyword-only arguments are 3.x only.)
(3) is a bit subtle: "def f(*): pass" is actually allowed by the grammar, but produces a SyntaxError later on, when the parse tree is converted to AST:
>>> def f(*): pass
...
File "<stdin>", line 1
SyntaxError: named arguments must follow bare *
So it probably doesn't matter much whether (3) is permitted by the grammar or not.
-- Mark
- Previous message: [Python-Dev] A grammatical oddity: trailing commas in argument lists.
- Next message: [Python-Dev] A grammatical oddity: trailing commas in argument lists.
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]