从PEP 3107,http://www.python.org/dev/peps/pep-3107/#parameters,我刚刚注意到一些额外的功能注释语法,我并不知道并且不太了解。
def foo(a: expression, b: expression = 5):
...
这是我不确定的第二部分expression = 5
。你会如何在实际意义上使用它?当然不要指定默认参数,这已经是不言而喻的了。
答案 0 :(得分:7)
= 5
不是注释的一部分。这是关键字参数的默认值。
如果您删除注释,您拥有的是:
def foo(a, b = 5):
来自Function definition grammar:
parameter ::= identifier [":" expression] defparameter ::= parameter ["=" expression]
其中defparameter
是函数定义中的参数; "=" expression
跟在parameter
之后,parameter
的定义包含定义注释的":" expression
部分。
引用original proposal, PEP 3107:
参数注释采用遵循参数 name 的可选表达式的形式:
def foo(a: expression, b: expression = 5): ...
在伪语法中,参数现在看起来像
identifier [: expression] [= expression]
。也就是说,注释始终位于参数的默认值之前,注释和默认值都是可选的。
强调我的。
答案 1 :(得分:0)
这是参数'b'的默认值。