一个Python函数可以有多个返回类型吗



Python函数是否可以根据if-else情况返回不同的类型?

def return_different() -> [String, List]:
a = random.randint(1, 10)
if a%2 == 0:
return []
else:
return "odd"

因此,在一种情况下,它可以返回一个String,或者在另一种情况中,它可能返回一个List。这在带有函数签名的Python中可能吗?

是的,您想要Union类型:

def return_different() -> Union[str, List]:
# Or in Python 3.10+
def return_different() -> str | list:

不过,我会重新考虑这个功能。由于字符串和列表没有太多功能重叠(基本上是Sequence(,在没有经过适当考虑的情况下返回不同的类型会使调用方的生活更加困难,因此您将强制它们进行运行时类型检查,以决定如何使用数据;这取决于他们希望如何使用返回的数据。

是的,您不必在返回类型上声明,然后就可以返回您想要的内容。

在Python中,没有类型,所以您可以返回您想要的任何类型。这意味着你可以返回不止一种类型的东西;例如,在上面的例子中,有时会返回一个列表,有时则返回一个字符串。函数签名只是代码中的一个注释;它不强制类型安全。此外,从技术上讲,您上面的返回签名意味着我们应该看到包含字符串和列表的列表的返回值。这并不意味着返回列表或字符串。

最新更新