在查看Python 3.3 语法规范时,我最近注意到一些有趣的事情:
funcdef: 'def' NAME parameters ['->' test] ':' suite
Python 2 中没有可选的“箭头”块,我在 Python 3 中找不到任何关于其含义的信息。事实证明这是正确的 Python,并且被解释器接受:
def f(x) -> 123: return x
我认为这可能是某种前置条件语法,但是:
x
2 < 1
熟悉这种语法风格的人可以解释一下吗?
这是一个函数注释。
更详细地说,Python 2.x 有文档字符串,它允许您将元数据字符串附加到各种类型的对象。这非常方便,因此 Python 3 通过允许您将元数据附加到描述其参数和返回值的函数来扩展该功能。
没有先入为主的用例,但 PEP 提出了几个。一种非常方便的方法是允许您使用预期类型注释参数;然后很容易编写一个装饰器来验证注释或将参数强制为正确的类型。另一个是允许特定参数的文档,而不是将其编码到文档字符串中。