什么 - >在Python函数定义中意味着什么?在查看Python 3.3语法规范时,我最近发现了一些有趣的东西:funcdef: 'def' NAME parameters ['->' test] ':' suitePython 2中没有可选的“箭头”块,我在Python 3中找不到任何有关其含义的信息。事实证明这是正确的Python并且它被解释器接受:def f(x) -> 123:
return x我认为这可能是某种先决条件语法,但是:我不能x在这里测试,它仍未定义,无论我在箭头之后放置什么(例如2 < 1),它都不会影响功能行为。任何习惯这种语法的人都可以解释一下吗?
3 回答
长风秋雁
TA贡献1757条经验 获得超7个赞
正如其他答案所述,该->
符号用作功能注释的一部分。>= 3.5
但是,在更新版本的Python中,它具有已定义的含义。
PEP 3107 - 功能注释描述了规范,定义了语法变化,func.__annotations__
存储它们的存在以及它的用例仍然是开放的这一事实。
但是在Python中3.5
,PEP 484 - Type Hints附加了一个含义:->
用于指示函数返回的类型。它似乎也将在未来版本中强制执行,如注释的现有用法:
最快的可想到的方案将引入静态弃用3.6中的非类型提示注释,3.7中的完全弃用,并声明类型提示作为Python 3.8中唯一允许使用的注释。
(强调我的)
3.6
到目前为止,我还没有真正实现这一点,因此它可能会受到未来版本的影响。
根据这个,您提供的示例:
def f(x) -> 123: return x
将来会被禁止(并且在当前版本中会令人困惑),需要将其更改为:
def f(x) -> int: return x
为了它有效地描述该函数f
返回一个类型的对象int
。
Python本身并没有以任何方式使用注释,它几乎填充并忽略它们。由第三方库来决定它们。
添加回答
举报
0/150
提交
取消