Python中递归嵌套对象(如任意维度int列表)应使用何种类型提示?
Python递归嵌套对象的类型提示方案
针对你提到的“元素为int、可任意嵌套的列表”这类递归结构,有几种更清晰规范的类型提示写法:
1. 使用TypeVar递归定义(兼容Python 3.8+)
这是最通用的方案,能明确表达“int或由该类型组成的列表”的递归逻辑:
from typing import TypeVar, List NestedIntList = TypeVar('NestedIntList', int, List['NestedIntList'])
这里通过TypeVar递归引用自身,完美支持任意层级的嵌套,类型检查工具(如mypy)能准确识别。
2. Python 3.10+ 管道语法简化写法
Python 3.10引入了|作为Union的简写,结合字符串字面量引用自身,写法更简洁:
from typing import List NestedIntList = int | List['NestedIntList']
3. Python 3.11+ 无引号自我引用
Python 3.11进一步支持了无需字符串引号的自我类型注解,可读性更强:
from typing import List NestedIntList = int | List[NestedIntList]
关于你原写法的问题
你给出的list[int | list[int | ...]]虽然能表达嵌套意图,但...的语义不够明确,且本质上只能表达“int或嵌套一层的列表”的延伸,不如递归类型定义清晰、通用,类型检查工具对这种写法的支持也不如递归定义完善。
内容的提问来源于stack exchange,提问作者LoneCodeRanger
相关产品推荐
相关产品推荐

