了解用户定义的迭代器

时间:2014-12-10 02:23:40

标签: python

在下面的代码中,我很困惑为什么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

1 个答案:

答案 0 :(得分:1)

要获得print 'Hi3',您需要通过return self.start声明。请记住,return语句会立即退出函数。 (也许你混淆了迭代器和生成器,并考虑了yield而不是return。)