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

ZeC*_*oca 0 python generator python-3.x

我有一个调用 API 并生成数据的函数。后来我用来next()从生成器中检索数据,但是由于我不知道有多少数据要“提取”,我最终会执行next()直到它引发StopIteration异常。

def get_data():
    source = API_Instance()
    yield source.get_some_data()

def parse_data():
    data = get_data()
    while True:
        try:
            row_data = next(data)
            print(row_data)
        except StopIteration:
            break
Run Code Online (Sandbox Code Playgroud)

这似乎是一种糟糕的方法。有没有办法避免 Try/Except 块?像知道发电机已用尽的方法吗?(找不到更好的词来形容它

Ry-*_*Ry- 7

StopIteration例外如何迭代器报告,它的完成。不过,有一种更简单的方法来循环整个迭代器:

def parse_data():
    data = get_data()

    for row_data in data:
        print(row_data)
Run Code Online (Sandbox Code Playgroud)