如何为后续转为指定类型的空元组设置正确的Python类型注解
问题原因
Tuple[int]的声明规则是:逗号分隔的每个泛型参数对应固定位置的元素类型,整体代表固定长度的元组,Tuple[int]就表示仅能包含1个int类型元素的元组,和你代码里动态拼接的变长元组场景不匹配,所以会触发类型错误。
解决方案
如果要声明所有元素都是int类型、长度不固定的元组,需要在泛型参数末尾加省略号...,写法为Tuple[int, ...]。
修改后的可通过mypy检查的代码如下:
from typing import Tuple def test() -> Tuple[int, ...]: o: Tuple[int, ...] = () for i in range(2): o += (i,) return o
如果你使用Python 3.9及以上版本,可以直接用内置tuple类型做注解,无需额外从typing导入:
def test() -> tuple[int, ...]: o: tuple[int, ...] = () for i in range(2): o += (i,) return o
内容的提问来源于stack exchange,提问作者dmmpie
相关产品推荐
相关产品推荐

