Roman, According to the Python call syntax definition (http://docs.python.org/ref/calls.html) commas should be allowed, so it seems like a minor bug. Here are the lines in question: -----http://docs.python.org/ref/calls.html----------- call ::= primary "(" [argument_list [","]] ")" argument_list::=positional_arguments ["," keyword_arguments] ["," "*" expression] ["," "**" expression] | keyword_arguments ["," "*" expression] ["," "**" expression] | "*" expression ["," "**" expression] | "**" expression ---------------------------------------------------------- If you notice in the 'call' definition, no matter what the 'argument_list' is, it can be followed by an optional ',' right before the closing ')'. Your code is a counterexample to this. Here is a more exhaustive example: -------------------------------------------------------- >>> def f(a,b): ... pass ... >>> f(1,2) >>> f(1,2,) >>> f(1,*[2]) >>> f(1,*[2],) File "<stdin>", line 1 f(1,*[2],) ^ SyntaxError: invalid syntax >>> f(1,**{'b':2}) >>> f(1,**{'b':2},) File "<stdin>", line 1 f(1,**{'b':2},) ^ SyntaxError: invalid syntax >>> f(*[1,2]) >>> f(*[1,2],) File "<stdin>", line 1 f(*[1,2],) ^ SyntaxError: invalid syntax >>> f(**{'a':1,'b':2}) >>> f(**{'a':1,'b':2},) File "<stdin>", line 1 f(**{'a':1,'b':2},) ^ SyntaxError: invalid syntax >>> >>> f(1,b=2) >>> f(1,b=2,) >>> f(a=1,b=2,) >>> -----------------------------------------------------
Anybody else knows more about this? /invoking the spirit of GvR... ;-) Nick Vatamaniuc Roman Susi wrote: > Hi! > > it is interesting that I found this syntax error: > > >>> a = {} > >>> str('sdfd', **a,) > File "<stdin>", line 1 > str('sdfd', **a,) > ^ > SyntaxError: invalid syntax > > > I just wonder is it intentional or by-product (bug or feature)? > (The behaviour makes sense, of course... I tend to leave commas when I > expect a list to be added to (i.e. almost always ;-))) > > > Regards, > Roman -- http://mail.python.org/mailman/listinfo/python-list