如何在Python中创建结合List与Union的自定义类型提示
定义等价于
Union[List[T1], List[T2], ...]的UnionList类型 你可以通过Python的类型变量元组(TypeVarTuple)和拆包(Unpack)特性来实现这个自定义类型,具体代码如下:
from typing import TypeVarTuple, Unpack, List, Union, TypeAlias # 定义可变长度的类型变量元组 Ts = TypeVarTuple('Ts') # 定义UnionList类型别名,等价于Union[List[T1], List[T2], ...] UnionList: TypeAlias = Union[List[Unpack[Ts]]]
使用示例
def print_list(my_list: UnionList[int, str]): for item in my_list: print(item) # 合法调用:纯整数列表或纯字符串列表 print_list([1, 2, 3]) print_list(["apple", "banana"]) # 非法调用:混合类型列表,会被类型检查器识别为错误 print_list([1, "apple"])
版本兼容说明
TypeVarTuple和Unpack是Python 3.11及以上版本typing模块的原生特性。如果你的Python版本低于3.11,可以安装typing_extensions库,然后从该库导入这两个类来实现相同功能:
from typing_extensions import TypeVarTuple, Unpack from typing import List, Union, TypeAlias Ts = TypeVarTuple('Ts') UnionList: TypeAlias = Union[List[Unpack[Ts]]]
内容的提问来源于stack exchange,提问作者Younghoon Jeong
相关产品推荐
相关产品推荐

