Python 如何向可变长度元组添加类型注释?

Python 如何向可变长度元组添加类型注释?,python,tuples,python-typing,Python,Tuples,Python Typing,我尝试键入Curio的源代码,但在代码的生成部分,我偶然发现了它的可变长度元组的问题 库里奥陷阱为内核生成一个已知长度的元组,但陷阱之间生成的元组长度不同 例如,curio.traps._read_waitfileobj生成tuple[int,int,int,str]类型的4元组,而curio.traps._spawncoro生成tuple[int,Coroutine]类型的2元组 它们所有收益率类型之间的相似之处在于,第一个项目始终是int,而其余的则是Any类型 在内核中,当它运行到下一个屈

我尝试键入Curio的源代码,但在代码的生成部分,我偶然发现了它的可变长度元组的问题

库里奥陷阱为内核生成一个已知长度的元组,但陷阱之间生成的元组长度不同

例如,curio.traps._read_waitfileobj生成tuple[int,int,int,str]类型的4元组,而curio.traps._spawncoro生成tuple[int,Coroutine]类型的2元组

它们所有收益率类型之间的相似之处在于,第一个项目始终是int,而其余的则是Any类型

在内核中,当它运行到下一个屈服点的协程时,它期望int作为第一项,Anys之后。我希望Tuple[int,Any,…]可以工作,但它给出了一个错误,表示。。。这是出乎意料的

从输入导入元组,任何 测试代码 vltuple:Tuple[int,Any,…]=1,2 vltuple=1,2,3 vltuple=1,'a','b' vltuple=1,[],4.5 以下是确切的错误消息:

____.py:4:错误:意外的“…”

____.py:4:错误:赋值表达式中不兼容的类型具有类型Tuple[int],变量具有类型Tuple[int,Any,Any]

正如我所评论的:

根据,只能进行注释 在中看到的任意长度的同构元组不能 查找任意长度的任何其他引用。它应该是一些黑客 但我建议你把它分成两个变量

i、 e

解决方案:

关键字:int args:列表 键,*args=1,2 键,*args=1,2,3 键,*args=1,'a','b' 键,*args=1,[],4.5
通过使用扩展解包,您可以键入并分配固定数量的变量。在本例中,只需输入一个键,额外的元素就会放入另一个变量中,该变量可以根据单独键入

,只能使用注释任意长度的齐次元组,正如您在中所看到的,您无法找到任何其他对任意长度的引用。这应该是一些黑客,但我建议你剥离成2个变量显示一个会这样做吗?很抱歉。我在打字方面相当缺乏经验。编辑:啊,你的意思是做key:int;args:元组;键,*args=vltuple。元组的第一个值始终为int,请将其保存在其他变量中。非常感谢。将其更改为key:int;args:列表;键,*args=1,a,bb,mypy不抱怨。祝您度过愉快的一天:发布解决方案并将其标记为已回答: