什么 - > (破折号大于箭头符号)是指Python方法签名?

时间:2015-07-16 05:08:00

标签: python python-3.x

在python方法的末尾有一个->或大于号的符号,我不确定它的意思。人们可能也称它为箭头。

以下是示例:

@property
def get_foo(self) -> Foo:
    return self._foo

其中self._foo是Foo的一个实例。

我的猜测是它是某种静态类型声明,告诉解释器self._foo是Foo类型。但是当我对此进行测试时,如果self._foo不是Foo的实例,则不会发生异常。另外,如果self._foo的类型不是Foo,那么假设它是int,那么type(SomeClass.get_foo())会返回int。那么,-> Foo是什么意思?

这个概念难以查找,因为它是一个没有通用名称的符号,而“箭头”一词具有误导性。

1 个答案:

答案 0 :(得分:19)

这是function annotations。可以将附加信息附加到argumentsreturn values个函数。这是说明如何使用函数的有用方法。 函数注释存储在函数的__annotations__属性中。

Use Cases (From documentation)

  • 提供输入信息

    • 类型检查
    • 让IDE显示函数期望和返回的类型
    • 功能重载/通用功能
    • 外语桥梁
    • 适应
    • 谓词逻辑功能
    • 数据库查询映射
    • RPC参数编组
  • 其他信息

    • 参数和返回值的文档

python-3.5开始,它可以用于Type Hints