簡體   English   中英

了解用戶定義的迭代器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM