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
但口译员不接受。我是误读了语法,还是语法不正确
在我看来像是个文档错误
是的
直到v3.2,当
argument_list
更改为parameter_list
。这不可能是对的,尽管提交one-line patch的人显然不这么认为未修改grammar itself。上面还写着:
既然是这样:
我想我们可以得出这样的结论:Python装饰器仍然具有我们所期望的语法
相关问题 更多 >
编程相关推荐