You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为包含相同元素类型的不同可迭代类型添加类型注解?

解决Union与泛型容器的类型标注错误

你的问题出在泛型参数的作用范围上:Union[List, Tuple][int, float]的写法是错误的,因为Union本身不是泛型类,无法直接通过下标指定元素类型。正确的做法是给每个容器类型单独指定泛型参数,再用Union包裹。

正确写法

from typing import List, Tuple, Union

def some(arg: Union[List[Union[int, float]], Tuple[Union[int, float], ...]]):
    pass

关键说明

  • 针对List:用List[Union[int, float]]明确表示元素为整数或浮点数的列表
  • 针对Tuple:
    • 若为任意长度的元组(元素均为int/float),需写Tuple[Union[int, float], ...]
    • 若为固定长度元组,比如2个元素,可写Tuple[Union[int, float], Union[int, float]]
  • 用Union包裹两个容器类型,即可表示参数可以是符合条件的列表或元组

Python 3.9+ 简化写法

如果使用Python 3.9及以上版本,可直接用内置类型替代typing模块的泛型,写法更简洁:

def some(arg: list[int | float] | tuple[int | float, ...]):
    pass

内容的提问来源于stack exchange,提问作者Dimon agon IO_04

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 11:55:53