Iterable without side effect 类型注解

Iterable without side effect type annotation

我正在寻找 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)
  1. Iterable 不适合,因为 x 迭代了不止一次
  2. Sequence 不适合因为 x 的顺序无关紧要

如何标注x

试试 Iterator[int]。 Python 中的迭代器是迭代一次后被消耗的迭代器。希望对你有帮助

没有注释。这不是类型系统可以表达的概念。 Iterable 是您最好的选择。如果你想得到更多的限制,你可以使用 Collection,但是 Iterable 表达的要求比你想要的少,Collection 表达的更多。