相关疑难解决方法(0)

什么 - >在Python函数定义中意味着什么?

在查看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 annotations python-3.x function-definition

383
推荐指数
9
解决办法
14万
查看次数

在Python方法签名中, - >(大于箭头符号)是什么意思?

->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呢?

这个概念很难查找,因为它是一个没有通用名称的符号,术语"箭头"具有误导性.

python python-3.x

25
推荐指数
1
解决办法
1万
查看次数