在查看Python 3.3语法规范时,我最近发现了一些有趣的东西:
funcdef: 'def' NAME parameters ['->' test] ':' suite
Run Code Online (Sandbox Code Playgroud)
Python 2中没有可选的"箭头"块,我在Python 3中找不到任何有关其含义的信息.事实证明这是正确的Python并且它被解释器接受:
def f(x) -> 123:
return x
Run Code Online (Sandbox Code Playgroud)
我认为这可能是某种先决条件语法,但是:
x在这里测试,它仍未定义,2 < 1),它都不会影响功能行为.任何习惯这种语法的人都可以解释一下吗?
在->python方法的末尾有一个或大于符号的符号,我不确定它的含义.人们可能也称它为箭头.
这是一个例子:
@property
def get_foo(self) -> Foo:
return self._foo
Run Code Online (Sandbox Code Playgroud)
其中self._foo是Foo的一个实例.
我的猜测是它是某种静态类型声明,告诉解释器self._foo类型为Foo.但是当我测试这个时,如果self._foo不是Foo的一个实例,就不会发生异常.此外,如果self._foo是Foo以外的类型int,那么假设它是一个,然后type(SomeClass.get_foo())返回int.那么,有什么意义-> Foo呢?
这个概念很难查找,因为它是一个没有通用名称的符号,术语"箭头"具有误导性.