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

tem*_*ame 0 python annotations

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

def foo(a: expression, b: expression = 5):
    ...
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ers 7

= 5没有注释的部分.这是关键字参数的默认值.

如果您删除注释,您所拥有的是:

def foo(a, b = 5):
Run Code Online (Sandbox Code Playgroud)

函数定义语法:

parameter      ::=  identifier [":" expression]
defparameter   ::=  parameter ["=" expression]
Run Code Online (Sandbox Code Playgroud)

where defparameter是函数定义中的参数; 在"=" expression如下parameter,和用于定义parameter包括":" expression定义的注释部分.

引用原始提案,PEP 3107:

参数的注释采用参数名称后面的可选表达式的形式:

def foo(a: expression, b: expression = 5):
    ...
Run Code Online (Sandbox Code Playgroud)

在伪语法中,参数现在看起来像identifier [: expression] [= expression].也就是说,注释始终位于参数的默认值之前,注释和默认值都是可选的.

强调我的.