Python 类型注释基于函数参数是否为列表的返回值注释

问题描述 投票:0回答:1
如果我有

def get( ids: str | list[str] | int | list[int], ) -> float | list[float]:
有没有办法在返回值注释中指定仅当输入

float

ids
str
的列表时才输出
int
的列表?

python annotations python-typing
1个回答
1
投票
实现此目的的一种方法是使用

@overload

 装饰器创建 2 个额外的函数签名,一个用于返回 
int | str
float
,另一个用于返回 
list[str] | list[int]
list[float]
,然后具有实际的函数定义,例如你现在有了。

from typing import overload @overload def test( ids:str | int, ) -> float:... @overload def test( ids:list[str] | list[int], ) -> list[float]:... def test( ids: str | list[str] | int | list[int], ) -> float | list[float]:...
    
© www.soinside.com 2019 - 2024. All rights reserved.