我正在寻找Iterable
,它可以无副作用地进行迭代。例如,我要注释以下参数x
:
def foo(x: NoSideEffectIterable[int]):
for i in range(10):
for xx in x: # x is iterated 10 times here
print(i*xx)
Iterable
不适合,因为x
被重复了多次Sequence
不适合,因为x
的顺序无关紧要如何注释x
?
没有注释。这不是类型系统可以表达的概念。 Iterable
是您最好的选择。如果您想更严格一些,可以使用Collection
,但是Iterable
表示的要求比您想要的要少,而Collection
表示的要求却更多。
尝试使用Iterator[int]
。 Python中的迭代器是可迭代的,可在您迭代一次之后使用。希望对您有所帮助