小编典典

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

all

在查看Python 3.3
语法规范
时,我最近注意到一些有趣的事情:

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

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

def f(x) -> 123:
    return x

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

  • 我无法x在这里测试,因为它仍然未定义,
  • 无论我在箭头后面放什么(例如2 < 1),它都不会影响函数的行为。

熟悉这种语法风格的人可以解释一下吗?


阅读 104

收藏
2022-03-02

共1个答案

小编典典

这是一个函数注释

更详细地说,Python 2.x 有文档字符串,它允许您将元数据字符串附加到各种类型的对象。这非常方便,因此 Python 3
通过允许您将元数据附加到描述其参数和返回值的函数来扩展该功能。

没有先入为主的用例,但 PEP
提出了几个。一种非常方便的方法是允许您使用预期类型注释参数;然后很容易编写一个装饰器来验证注释或将参数强制为正确的类型。另一个是允许特定参数的文档,而不是将其编码到文档字符串中。

2022-03-02