假设我有2个函数,
func1
和func2
。 func1
返回3个整数的列表,func2
接受3个整数的元组,我如何将列表转换为元组,以便可以通过类型检查器防止错误(我正在使用mypy
) .var1: list[int, int, int] = func1()
func2(tuple(var1))
func2
调用时抛出错误:
Expected type 'tuple[int, int, int]', got 'tuple[int, ...]' instead.
列表类型不包含有关其长度的信息。理想情况下,
mypy
可以检查硬编码的 slice
对象来推断 tuple(var1[:2]])
具有类型 tuple[int, int, int]
,但事实并非如此(至少在今天)。
同时,您需要显式构造元组:
func2((var1[0], var1[1], var1[2]))
我认为,没有办法做到这一点,因为
list[int, int, int]
不存在。如果使用列表,则只能指定列表包含的数据类型,例如 list[int]
如果您知道 func1
返回 3 个整数的列表,为什么不让它返回 3 个整数的元组?