[英]Understanding User defined Iterators
在下面的代碼中,我很困惑為什么Hi3
永遠不會被打印:
class Counter(object):
def __init__(self, size):
self.size = size
self.start = 0
def __iter__(self):
print "called __iter__", self.size
return self
def next(self):
if self.start < self.size:
print 'Hi1'
self.start = self.start + 1
print 'Hi2'
return self.start
print 'Hi3'
raise StopIteration
c = Counter(2)
for num in c:
print num
要到達print 'Hi3'
您需要經過return self.start
語句。 請記住, return
語句會立即退出該函數。 (也許您在混合迭代器和生成器,並考慮了yield而不是return
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.