首页 >后端开发 >Python教程 >Python 的 __iter__ 和 __next__ 方法如何启用迭代器创建?

Python 的 __iter__ 和 __next__ 方法如何启用迭代器创建?

Patricia Arquette
Patricia Arquette原创
2025-01-02 19:19:43835浏览

How Do Python's `__iter__` and `__next__` Methods Enable Iterator Creation?

在 Python 中创建迭代器

Python 迭代器是遵守迭代器协议的对象,具有 __iter__() 和 __next__()

iter 方法:

__iter__() 方法返回迭代器对象,在循环开始时自动调用。

下一个方法:

__next__() 方法检索后续值,并在循环增量期间隐式调用。当没有更多值可用时,它会引发 StopIteration 异常,循环结构会检测到该异常并用于停止迭代。

例如,考虑以下简单的计数器类:

class Counter:
    def __init__(self, low, high):
        self.current = low - 1
        self.high = high

    def __iter__(self):
        return self

    def __next__(self): # Python 2: def next(self)
        self.current += 1
        if self.current < self.high:
            return self.current
        raise StopIteration

当利用计数器:

for c in Counter(3, 9):
    print(c)

输出将be:

3
4
5
6
7
8

或者,生成器提供了一种更简单的迭代器创建方法:

def counter(low, high):
    current = low
    while current < high:
        yield current
        current += 1

使用生成器:

for c in counter(3, 9):
    print(c)

产生相同的输出。在内部,生成器类似于 Counter 类,支持迭代器协议。

有关迭代器的全面概述,请参阅 David Mertz 的文章“迭代器和简单生成器”。

以上是Python 的 __iter__ 和 __next__ 方法如何启用迭代器创建?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn