一尘不染

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

python

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

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

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

阅读 121

收藏
2020-12-20

共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'>}

请通过PEP
483
了解有关类型提示的更多信息。另请参见Python
3.5中的类型提示是
什么?

请注意,此功能仅适用于 Python 3.5 及更高版本。PEP
484
中明确提到了这一点。

2020-12-20