Python 类型标注中的 tuple[T, ...]:任意长度和固定长度
Python 类型标注中的 tuple[T, ...]:任意长度和固定长度 副标题: tuple[DocumentBlock, ...] 中的 ... 不是一个要放进元组的值,而是 类型标注中的“任意数量”记号。理解它,才能看懂解析结果为什么使用元组,以及它和列表的边界。 适读人群: 正在使用 Python 类型标注、dataclass 或文档解析模型的开发者 阅读时间: 6 分钟 从 ParsedDocument 的 blocks 字段说起 在文档解析服务中,可以把解析结果表示成一个不可变的数据对象: from dataclasses import dataclass @dataclass(frozen=True) class DocumentBlock: block_id: str raw_text: str @dataclass(frozen=True) class ParsedDocument: blocks: tuple[DocumentBlock, ...] 这里最容易让人疑惑的是: blocks: tuple[DocumentBlock, ...] 这个标注到底表示什么?为什么不是: blocks: tuple[DocumentBlock] 答案是:前者表示“任意长度、每一项都是 DocumentBlock”,后者表示“固定只有一项, 而且这一项是 DocumentBlock”。 tuple[T, ...] 表示任意长度 把它拆开看: tuple[T, ...] ^ ^ | └── 元素数量不限 └────── 每一项的类型是 T 因此: ...