如果函数返回多种类型,我可以声明一个函数返回值吗? [复制]
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"
【讨论】:
以上是关于如果函数返回多种类型,我可以声明一个函数返回值吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章