– >在Python函数定义中是什么意思?

问题:

最近在看到Python 3.3 grammar specification时,注意到有趣的事情

funcdef: 'def' NAME parameters ['->' test] ':' suite

Python 2中没有可选的“箭头”块,我在Python 3中找不到有关其含义的任何信息。原来,这是正确的Python,它被解释器接受:

def f(x) -> 123:
    return x

我以为这可能是某种前提条件语法,但是:

  • 我不能在这里测试x,还是没有定义,
  • 不管我在箭头后面(例如2 <1),它不影响功能行为。

任何习惯这种语法的人都可以解释一下吗?

回答:

这是一个function annotation
更详细地说,Python 2.x具有docstrings,它允许您将元数据字符串附加到各种类型的对象。这是非常方便的,所以Python 3通过允许您将元数据附加到描述其参数和返回值的函数来扩展该功能。
没有预想到的用例,但是PEP提出了几个例子。一个非常方便的是允许您使用其预期类型注释参数;那么编写一个验证注释或将参数强制为正确类型的装饰器就会很容易。另一个是允许参数特定的文档,而不是将其编码到docstring中。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: What does -> mean in Python function definitions?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

21 − 13 =