在Python函数定义中,符号“->”表示函数返回类型。

946

最近我在查看Python 3.3语法规范时发现了一些有趣的东西:

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

在 Python 2 中,可选的 'arrow' 块是不存在的,而且我找不到有关其在 Python 3 中含义的任何信息。事实证明,这是正确的 Python 代码,并被解释器接受:

def f(x) -> 123:
    return x

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

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

熟悉这种语法风格的人能否解释一下?


1
如果你现在在任何代码中发现这个,那很可能是静态类型检查器(如mypy)的类型提示。https://www.mypy-lang.org/ - Joooeey
11个回答

0
请参考PEP3107规范。这些是函数注释。Python 2.x使用文档字符串。同样,Python 3引入了使用“->”作为函数注释的方式。Python在生成文档时使用这些注释。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接