如何在StopIteration之前停止在生成器上调用next

问题描述

我有一个调用API并产生数据的函数。后来我使用next()生成器中检索数据,但是由于我不知道要“提取”多少数据,所以我最终执行next()直到它引起{{1} }例外。

stopiteration

这似乎是一种糟糕的方法我有办法避免Try / Except块吗?想知道发电机已耗尽吗? (找不到更好的词

解决方法

StopIteration例外 是迭代器报告其完成情况的方式。不过,有一种更简单的方法可以遍历整个迭代器:

def parse_data():
    data = get_data()

    for row_data in data:
        print(row_data)