小编典典

如何使用类型提示指定多个返回类型

all

我在 python 中有一个函数,可以返回 abool或 a list。有没有办法使用类型提示指定返回类型?

例如,这是正确的方法吗?

def foo(id) -> list or bool:
    ...

阅读 101

收藏
2022-03-17

共1个答案

小编典典

文档

班级typing.Union

联合式; _ Union[X, Y] 表示 X 或 Y。_

因此,表示多个返回数据类型的正确方法是

from typing import Union


def foo(client_id: str) -> Union[list,bool]

但请注意,不强制键入。Python 仍然是一种动态类型的语言。已开发注释语法以帮助在发布到生产之前的代码开发过程中。正如 PEP 484
所述,“运行时不会进行类型检查”。

>>> def foo(a:str) -> list:
...     return("Works")
... 
>>> foo(1)
'Works'

如您所见,我正在传递一个 int 值并返回一个 str。但是,__annotations__将设置为相应的值。

>>> foo.__annotations__ 
{'return': <class 'list'>, 'a': <class 'str'>}

请通过PEP483了解有关类型提示的更多信息。

请注意,这仅适用于 _ Python 3.5_ 及更高版本。这在PEP
484
中明确提到。


从 Python 3.10
开始,有一种新的方式来表示这个联合。请参阅联合类型

联合对象保存 | 的值 (按位或)对多种类型对象的操作。这些类型主要用于类型注释。与 typing.Union
相比,联合类型表达式支持更简洁的类型提示语法。

正如我们所看到的,这与以前的版本完全相同typing.Union。我们之前的示例可以修改为使用此表示法:

def foo(client_id: str) -> list | bool:
2022-03-17