【问题标题】:What is the purpose of the = operator in Python function annotations?Python 函数注解中 = 运算符的作用是什么?
【发布时间】:2015-01-21 01:00:49
【问题描述】:

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

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

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

【问题讨论】:

  • 正如您链接到的 PEP 所说“注释总是在参数的默认值之前”
  • 啊,错过了那句话。虽然不清楚反对票。

标签: python annotations


【解决方案1】:

= 5不是注释的一部分。这是此处关键字参数的默认值。

如果你去掉注释,你得到的是:

def foo(a, b = 5):

来自Function definition grammar

parameter      ::=  identifier [":" expression]
defparameter   ::=  parameter ["=" expression]

其中defparameter 是函数定义中的参数; "=" expression 跟在 parameter 之后,parameter 的定义包括定义注释的 ":" expression 部分。

引用original proposal, PEP 3107

参数注释采用可选表达式的形式,跟随参数名称

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

在伪语法中,参数现在看起来像 identifier [: expression] [= expression]。也就是说,注解总是在参数的默认值之前,注解和默认值都是可选的。

强调我的。

【讨论】:

    【解决方案2】:

    这是参数“b”的默认值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-18
      • 1970-01-01
      • 2011-04-18
      • 2016-02-20
      • 2015-05-28
      相关资源
      最近更新 更多