python - 了解用户定义的迭代器

标签 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

最佳答案

要到达print 'Hi3',您需要经过return self.start语句。请记住,return 语句会立即退出该函数。 (也许您混淆了迭代器和生成器,并想到 yield 而不是 return)。

关于python - 了解用户定义的迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27392344/

相关文章:

python - 将天数添加到数据框中的日期

python - 为什么我只能从文件中读取行一次?

python - pyGTK/GTK filechooser - 是否可以在文件或文件夹写入光盘之前验证用户输入?

python - 在 Windows 上安装 python3 + lxml

python程序添加每一行的所有值

Python:创建/写入文件直到循环结束

python - 在 Python 中将 click.progressbar 与多处理一起使用

python - 无法解析 [{ 和 }] Python 之间返回的 JSON 数据

Python条件字典理解

python - 将指数转换为 float