[英]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.