如何为从Tuple中解包提取的多个变量添加类型注解
Python元组解包时的变量类型标注正确实现方式
你尝试的写法不符合Python语法规范,正确实现有以下几种可选方案:
方案1:兼容Python 3.6+的通用写法
先单独声明每个变量的类型,再执行解包赋值,所有支持变量类型标注的Python版本都可使用:
from typing import Tuple def f() -> Tuple[int, int, int]: return 1, 2, 3 # 先标注各变量类型 i: int j: int n: int # 再执行解包赋值 i, j, n = f()
方案2:Python 3.10+ 支持的简化写法
Python 3.10 开始允许将整个解包变量列表用括号包裹后,分别为每个变量添加类型标注:
from typing import Tuple def f() -> Tuple[int, int, int]: return 1, 2, 3 # 整个左侧变量用括号包裹后分别加标注即可 (i: int, j: int, n: int) = f()
方案3:使用cast做类型标注
如果不想拆分赋值和标注步骤,也可以用typing.cast对返回值做类型标注,适配所有Python 3.6+版本:
from typing import Tuple, cast def f() -> Tuple[int, int, int]: return 1, 2, 3 i, j, n = cast(Tuple[int, int, int], f())
注:Python 3.9及以上版本可以直接使用内置的tuple类型代替需要导入的Tuple,即写为tuple[int, int, int]。
内容的提问来源于stack exchange,提问作者mikolaj semeniuk
相关产品推荐
相关产品推荐

