如果函数返回多种类型,我可以声明一个函数返回值吗? [复制]

Posted

技术标签:

【中文标题】如果函数返回多种类型,我可以声明一个函数返回值吗? [复制]【英文标题】:Can I declare a function return value if it returns multiple types? [duplicate] 【发布时间】:2021-04-16 20:04:36 【问题描述】:

假设我有这样的功能:

def A(test=False):
    if test:
        return 1
    return "no value passed in for test"

在 Typescript 中,您可以执行类似的操作

function A(test=false) <number | string> 
    ...

但是如果我尝试用 Python 做同样的事情,我会得到一个错误。

def A(test=False) -> (int, str):

def A(test=False) -> [int, str]:

def A(test=False) -> int or str:

在处理类型检查中的歧义方面,我更了解 Python。所以这可能不是问题。但如果有正确的方法,我很感兴趣。

【问题讨论】:

【参考方案1】:

使用typing.Union 表示多种类型的“非此即彼”关系。

from typing import Union

def fn(test=False) -> Union[str, int]:
    if test:
        return 1
    return "no value passed in for test"

在 Python 3.10 中,二元或运算符 | 可用于根据 PEP 604 创建联合:

def fn(test=False) -> str | int:
    if test:
        return 1
    return "no value passed in for test"

【讨论】:

以上是关于如果函数返回多种类型,我可以声明一个函数返回值吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

有人可以解释 OIDC 中的 ACR 返回值吗?

可以在 C++11 中检索线程函数的返回值吗?

ORACLE 创建的函数 可以返回两个值吗,该怎么做?

10-1:return可以没有返回值吗?

当一个函数无返回值时,函数的类型应定义为啥

go语言学习--函数