当迭代器耗尽时,最后一次从迭代器返回一些东西的好方法是什么。我正在使用一个标志,但这很丑陋:
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”。我无法控制调用代码,所以这必须在我的迭代器中完成。