无副作用类型注解的可迭代

问题描述 投票:1回答:2

我正在寻找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

python typing mypy
2个回答
1
投票

没有注释。这不是类型系统可以表达的概念。 Iterable是您最好的选择。如果您想更严格一些,可以使用Collection,但是Iterable表示的要求比您想要的要少,而Collection表示的要求却更多。


0
投票

尝试使用Iterator[int]。 Python中的迭代器是可迭代的,可在您迭代一次之后使用。希望对您有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.