标签: python types
与以下含义相似的事物
def func(arg: Union[List[Any], Tuple[Any]]): ...
该类型将适用于所有无法使用的可迭代对象,同时明确排除例如生成器表达式。用法示例为:
def func(arg: NonConsumableIterable[Any]): ...
如果这种类型存在并且我忽略了它,那就太好了。但是,如果它不存在,我很想了解为什么它不存在。
答案 0 :(得分:0)
类型注释Sequence可能是您正在寻找的注释。请注意,如注释中所述,序列与不可消耗的可迭代不同。但是,如果您希望迭代器不消耗,那么很可能还希望该参数支持len和__getitem__。
Sequence
len
__getitem__
来自mypy docs:
将Iterable用于一般可迭代项(for中可用的任何变量), 和Sequence,其中一个序列(支持len和__getitem__)是
Iterable
for
在Python词汇表中也定义了sequence。
因此,为了回答问题的后续部分,核心库中不存在非消耗型可迭代对象的注释的可能原因是,这不是一个很常见的用例。不过,如果您真的需要一个,可以使用generics