Python3.8中如何通过类型提示语法在一行内接收多个返回值
解决Python解构赋值时的类型注解语法错误问题
这个问题我之前踩过坑!你遇到的SyntaxError是因为Python的语法规则不支持在解构赋值的左侧直接给每个变量单独添加类型注解,像tokens: List[int], token_borrowed_map: Dict[str, Any] = ...这种写法不符合语法规范,所以解释器会报错。
下面给你几种可行的正确写法,按推荐程度排序:
1. 先解构赋值,再单独添加变量类型注解(推荐)
这是符合PEP 526变量注解规范的写法,Python 3.8及以上版本支持,清晰直观:
from typing import List, Dict, Any, Tuple def _calculate_lending_share(user_id: str, squad_id: str) -> Tuple[List[int], Dict[str, Any]]: # 方法实现示例 return [1,2,3], {"user_1": 5, "user_2": 3} # 先完成解构赋值 tokens, token_borrowed_map = _calculate_lending_share("user123", "squad456") # 再给每个变量单独声明类型 tokens: List[int] token_borrowed_map: Dict[str, Any]
2. 用注释方式给整个解构结果加类型注解
如果习惯传统的类型提示写法,也可以在赋值语句末尾用注释标注整体的返回类型,这种写法兼容更早的Python版本:
tokens, token_borrowed_map = _calculate_lending_share("user123", "squad456") # type: Tuple[List[int], Dict[str, Any]]
不过这种写法的可读性稍弱,需要手动关联注释和对应的变量。
额外小提示
如果你后续升级到Python 3.9及以上版本,可以直接用标准库的list、dict代替typing.List、typing.Dict,写法会更简洁:
from typing import Any, Tuple def _calculate_lending_share(user_id: str, squad_id: str) -> Tuple[list[int], dict[str, Any]]: # 方法实现示例 return [1,2,3], {"user_1": 5, "user_2": 3}
内容的提问来源于stack exchange,提问作者Mukul Anand




