我是Python新手,但我对Python中的可迭代和迭代器的理解是,它们支持迭代器协议。
在一些迭代工具context中,一个迭代器被传递给了 iter()
来返回一个迭代器。然后, next()
被连续调用,以生成所有项目,直到 next()
提高了 StopIteration
异常。
迭代器只支持一次迭代,而不是自己的迭代器的可迭代器则支持多次迭代。
似乎取消了可迭代和迭代器的区分,让所有的可迭代器都成为自己的多传迭代器,会更干净。
在迭代器协议中把可迭代和迭代器分开有什么好处逻辑?
在一些迭代工具context中,一个迭代器被传递给iter()以返回一个 ... 可迭 意味着该对象可以被迭代。通常,这意味着可以在实例上调用iter()来获取迭代器。
一个 迭代器 是一个迭代的对象。它们也是一个可迭代对象,这意味着它们可以在iter()中被调用并返回...自己。通过对它调用 next() ,迭代器返回序列中的下一个对象。
简单地说:所有的可迭代和迭代器在用iter()调用时都会给出一个迭代器。当用 next()调用时,所有的迭代器都会给出序列中的下一个元素。
迭代器是单次传递的,因为它使程序员的生活更容易。这个可以作为迭代器传递。(x*3 for x in range(10))
这个也可以
__iter__(self):
for x in range(10):
yield x*3
如果它们必须是多通的, 每一个都必须在另一个循环里面编程, 给迭代器的程序员增加更多的工作.
如果要再次传递,当迭代器用完元素返回时,再从迭代器中得到一个新的迭代器:)