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

mypy类型检查时list[int,...]报错但tuple[int,...]正常的原因

原因说明

这是Python类型标注规则里list和tuple的语义差异导致的,两者的类型参数定义完全不同:

  • list是可变同质序列,类型标注仅接受1个类型参数,用来指定列表中所有元素的统一类型,没有用...表示长度的语法。你写的list[int, ...]传入了2个参数,不符合list的类型签名,mypy会直接抛出参数数量不匹配的错误。正确的整数列表标注写法是list[int]。
  • tuple是不可变序列,支持两种标注模式:
    • 定长定类元组:按顺序写出每个位置的元素类型,比如tuple[int, str, bool]对应长度为3、三个位置元素分别为int/str/bool的元组
    • 不定长同质元组:固定用[元素类型, ...]的格式,表示元组长度任意、所有元素均为指定类型,这里的...是tuple类型专属的语法标记,所以tuple[int, ...]是合法写法,mypy不会报错。

修正后的可正常通过mypy检查的代码如下:

a: list[int] = [1,2,3,4,5]
print(a)

b: tuple[int, ...] = (1,2,3,4,5)
print(b)

内容的提问来源于stack exchange,提问作者Yokesh Chowdary

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 00:54:28