我在 python 中有一个函数,可以返回 abool或 a list。有没有办法使用类型提示指定返回类型?
bool
list
例如,这是正确的方法吗?
def foo(id) -> list or bool: ...
从文档
班级typing.Union 联合式; _ Union[X, Y] 表示 X 或 Y。_
班级typing.Union
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__将设置为相应的值。
__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: