簡體   English   中英

多個返回值的正確類型提示

[英]Correct type hint for multiple return values

假設我有一個 function 在某些情況下返回單個值,在其他情況下返回多個值(即元組)。

def foo(a: int, b: int, flag: bool):
    if flag:
        return a
    else:
        return a, b

這個函數的返回值的正確類型注釋是什么?

我可以提出這樣的建議:

def foo(a: int, b: int, flag: bool) -> Tuple[int, Optional[int]]:
    if flag:
        return a
    else:
        return a, b

但我不喜歡這段代碼的主要內容是,如果 function 返回單個值,則該值不是元組。 因此,為了使這項工作正常,我應該將 function 重新制作為

def foo(a: int, b: int, flag: bool) -> Tuple[int, Optional[int]]:
    if flag:
        return (a,) 
    else:
        return a, b

這是我不想做的事情。 有什么想法嗎?

您想使用typing.Union來指示 function 可以返回一種或另一種類型的事物。 例如,如果您有一個 function 可以返回一個int或一個str ,那么它的返回類型將是Union[int, str]

所以,

def foo(a: int, b: int, flag: bool) -> Union[int, Tuple[int, int]]:

如果您使用的是 Python 3.10,則有更好的方法來編寫聯合: int | Tuple[int, int] int | Tuple[int, int]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM