【发布时间】:2021-02-27 00:08:51
【问题描述】:
如果我理解正确,我们在 Python 中有:
- Iterables =
__iter__()已实现 - Iterators =
__iter__()返回 self &__next__()已实现 - Generators = 使用
yield语句或生成器表达式创建的迭代器。
问题:以上类别是否始终/从不消耗?
我所说的消耗品是指遍历它们会“破坏”可迭代对象;比如 zip()(消耗品)与 range()(非消耗品)。
【问题讨论】:
-
小修正:
yield在def语句中创建一个生成器,但您也可以使用生成器表达式创建一个生成器,例如(x for x in [1,2,3]). -
回过头来提到这个页面对于查找这些概念的 Python 文档定义很有用:docs.python.org/3.8/library/collections.abc.html