Python 3.8.9方法复杂返回类型定义报错问题咨询
Python 3.8.9 类型提示写法问题解决
你的问题核心是Python类型提示的版本兼容性,以及语法使用错误:
1. 版本差异说明
Python 3.9才引入PEP 585标准,允许直接用list[int]、tuple[int, int]这类内置类型加中括号的泛型写法。而3.8及更早版本,必须使用typing模块提供的对应泛型类型。
2. 你的错误点
- 直接写
def ... -> list(tuple(int,int))是完全错误的语法:这不是类型提示,而是试图在运行时调用list()和tuple()构造函数,tuple(int,int)本身会触发报错——因为tuple()构造器最多接收1个可迭代参数,你传了两个int类型,自然会抛出“tuple expected at most 1 argument, got 2”。 - 官方文档里的
list[int]是3.9+的写法,3.8.9不支持,所以复制过来会报错。
3. 正确写法(Python 3.8.9适用)
先从typing模块导入对应泛型类型,再用方括号指定内部类型:
from typing import List, Tuple def your_function() -> List[Tuple[int, int]]: # 函数逻辑示例 return [(1,2), (3,4)]
补充:多版本兼容方案
如果需要代码兼容Python 3.8及更高版本,可以安装typing-extensions库,使用from typing_extensions import List, Tuple,写法和上述一致,同时能在低版本中模拟PEP 585的语法(不过更推荐直接使用标准库typing模块的写法)。
内容的提问来源于stack exchange,提问作者Daniil T.
相关产品推荐
相关产品推荐

