我正在尝试(作为练习)输入Curio的源代码,但是我在代码的生成部分中偶然发现了它的可变长度元组的问题。
Curio的陷阱向内核生成一个已知长度的元组,但这些陷阱产生的元组长度不同。
例如,curio.traps._read_wait(fileobj)生成类型为Tuple[int, int, int, str]的4元组,而curio.traps._spawn(coro)生成类型为Tuple[int, Coroutine]的2元组。
它们的所有产量类型之间的相似之处在于,第一个项目总是一个int,而其余的项目具有Any类型。
在内核中,当它将协同线运行到下一个屈服点时,它期望int作为第一项,而Any则在此之后。我原以为Tuple[int, Any, ...]会做一些工作,但是它给出了一个错误,说明...是意外的。
from typing import Tuple, Any
# Test code
vltuple: Tuple[int, Any, ...] = (1, 2)
vltuple = (1, 2, 3)
vltuple = (1, 'a', 'b')
vltuple = (1, [], 4.5)以下是准确的错误消息:
____.py:4:错误:意外‘.’ ____.py:4:错误:赋值中不兼容的类型(表达式有"Tupleint“类型,变量有类型"Tupleint,Any,Any")
发布于 2019-06-23 03:06:59
https://stackoverflow.com/questions/56719707
复制相似问题