从迭代器返回,然后抛出StopIteration

2024-05-17 03:19:09 发布

您现在位置:Python中文网/ 问答频道 /正文

当迭代器最后一次用完时,返回它的好方法是什么。我用的是旗子,但这很难看:

class Example():

    def __iter__(self):
        self.lst = [1,2,3]
        self.stop = False # <-- ugly            
        return self

    def next(self):
        if self.stop:  # <-- ugly
            raise StopIteration
        if len(self.lst) == 0:
            self.stop = True            
            return "one last time"
        return self.lst.pop()

背景:我正在从外部源获取未知数量的字符串,并将它们进一步发送到调用方。当进程结束时,我想发出一个字符串“x records processed”。我无法控制调用代码,所以这必须在迭代器中完成。


Tags: 方法字符串selffalsereturnifexampledef