【问题标题】: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。所以这可能不是问题。但如果有正确的方法,我很感兴趣。

【问题讨论】:

    标签: python type-hinting


    【解决方案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"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多