如果Python方法中有不同类型的可能返回,我该怎么办?

如果Python方法中有不同类型的可能返回,我该怎么办?,python,syntax,Python,Syntax,通常我会记下方法的返回类型: def my_method(arg1: int, arg2: list) -> dict: ... 但是,如果充其量只返回一个列表,但万一出现问题,False将被返回,我该怎么办呢。我是否在方法的标题中明确了这一点?如果是,怎么做?像这样 def my_method(arg1: int, arg2: list) -> dict, bool: ... 正如@ChrisDoyle所说的,返回类型应该始终保持一致,因为相反的情况

通常我会记下方法的返回类型:

 def my_method(arg1: int, arg2: list) -> dict:
      ...
但是,如果充其量只返回一个列表,但万一出现问题,
False
将被返回,我该怎么办呢。我是否在方法的标题中明确了这一点?如果是,怎么做?像这样

 def my_method(arg1: int, arg2: list) -> dict, bool:
      ...

正如@ChrisDoyle所说的,返回类型应该始终保持一致,因为相反的情况可能会导致用户代码中的误解。但是,在某些情况下,需要声明多个返回类型。Python提供了一个名为
typing
的标准内置模块,您可以从中使用
Union
类型。你可以阅读更多关于它的内容

例如,要指定必须为数值的类型提示,请执行以下操作:

from typing import Union

Number = Union[int, float, complex] 
请注意,此时
isinstance(3,Number)
将返回
True

使用该
联合
类型,您只需解决以下问题:

from typing import Union

def my_method(arg1: int, arg2: list) -> Union[dict, bool]:
    ...

通常情况下,最好保持返回类型的一致性,因此如果出现问题,要么返回一个空列表,使其一致,要么引发一个错误。@ChrisDoyle好的,明白了!谢谢,这是一个空列表,回答了你的问题吗?为什么要标记一个副本,然后回答这个问题?你链接的问题回答了OP的问题question@PranavHosangadi为什么不呢?虽然链接的问题可能解决了他的问题,但我想添加一个进一步的解释。建议的做法是,如果您觉得另一个问题的答案没有包含足够的解释,则添加另一个问题的答案,因为该问题更具可视性,并且该问题可能在将来被删除。