Python 方法签名中的 ->(破折号大于箭头符号)是啥意思? [复制]
Posted
技术标签:
【中文标题】Python 方法签名中的 ->(破折号大于箭头符号)是啥意思? [复制]【英文标题】:What does the -> (dash-greater-than arrow symbol) mean in a Python method signature? [duplicate]Python 方法签名中的 ->(破折号大于箭头符号)是什么意思? [复制] 【发布时间】:2015-10-05 09:33:41 【问题描述】:在 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】:这是function annotations。它可用于将附加信息附加到arguments 或return values 函数。这是一种说明必须如何使用函数的有用方式。
函数注解存储在函数的__annotations__
属性中。
Use Cases (From documentation)
提供打字信息
类型检查 让 IDE 显示函数期望和返回的类型 函数重载/泛型函数 外语桥梁 适应 谓词逻辑函数 数据库查询映射 RPC 参数封送处理其他信息
参数和返回值的文档来自python-3.5
可用于Type Hints
【讨论】:
我的头脑彻底崩溃了! 这里要补充的一件好事是,它们是改变程序的功能还是仅仅是注释?如果你不遵守注解中的规则,你的程序会抛出错误吗? 答案中的示例会很棒以上是关于Python 方法签名中的 ->(破折号大于箭头符号)是啥意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章