为什么不把所有的迭代器都变成自己的多通迭代器呢?

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

我是Python新手,但我对Python中的可迭代和迭代器的理解是,它们支持迭代器协议。

在一些迭代工具context中,一个迭代器被传递给了 iter() 来返回一个迭代器。然后, next() 被连续调用,以生成所有项目,直到 next() 提高了 StopIteration 异常。

迭代器只支持一次迭代,而不是自己的迭代器的可迭代器则支持多次迭代。

似乎取消了可迭代和迭代器的区分,让所有的可迭代器都成为自己的多传迭代器,会更干净。

在迭代器协议中把可迭代和迭代器分开有什么好处逻辑?

python python-3.x iterator iteration iterable
1个回答
0
投票

在一些迭代工具context中,一个迭代器被传递给iter()以返回一个 ... 可迭 意味着该对象可以被迭代。通常,这意味着可以在实例上调用iter()来获取迭代器。

一个 迭代器 是一个迭代的对象。它们也是一个可迭代对象,这意味着它们可以在iter()中被调用并返回...自己。通过对它调用 next() ,迭代器返回序列中的下一个对象。

简单地说:所有的可迭代和迭代器在用iter()调用时都会给出一个迭代器。当用 next()调用时,所有的迭代器都会给出序列中的下一个元素。

迭代器是单次传递的,因为它使程序员的生活更容易。这个可以作为迭代器传递。(x*3 for x in range(10))

这个也可以

__iter__(self):
    for x in range(10):
        yield x*3

如果它们必须是多通的, 每一个都必须在另一个循环里面编程, 给迭代器的程序员增加更多的工作.

如果要再次传递,当迭代器用完元素返回时,再从迭代器中得到一个新的迭代器:)

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