函数定义的语法规范 (function definitions) 如下:
funcdef ::= [decorators] "def" funcname "(" [parameter_list] ")" ["->" expression] ":" suite
decorators ::= decorator+
decorator ::= "@" dotted_name ["(" [parameter_list [","]] ")"] NEWLINE
dotted_name ::= identifier ("." identifier)*
parameter_list ::= (defparameter ",")*
| "*" [parameter] ("," defparameter)* ["," "**" parameter]
| "**" parameter
| defparameter [","] )
parameter ::= identifier [":" expression]
defparameter ::= parameter ["=" expression]
funcname ::= identifier
似乎暗示以下语法是有效的:
@some.dotted.name(*what : "is this")
def my_func(x):
pass
但是它被解释器拒绝了。我是否误读了语法,或者语法本身就有问题?