Python函数注释中=运算符的用途是什么?

时间:2014-05-12 14:59:03

标签: python annotations

从PEP 3107,http://www.python.org/dev/peps/pep-3107/#parameters,我刚刚注意到一些额外的功能注释语法,我并不知道并且不太了解。

def foo(a: expression, b: expression = 5):
    ...

这是我不确定的第二部分expression = 5。你会如何在实际意义上使用它?当然不要指定默认参数,这已经是不言而喻的了。

2 个答案:

答案 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'的默认值。