在生成器中,raise StopIteration和return语句之间有什么区别?

9 浏览
0 Comments

在生成器中,raise StopIteration和return语句之间有什么区别?

我对在生成器中使用raise StopIterationreturn语句之间的区别很感兴趣。例如,这两个函数之间有什么区别吗?

def my_generator0(n):
    for i in range(n):
        yield i
        if i >= 5:
            return
def my_generator1(n):
    for i in range(n):
        yield i
        if i >= 5:
            raise StopIteration

我猜测更符合Python风格的方式是第二种方式(如果我错了,请纠正我),但据我所见,两种方式都会引发StopIteration异常。

0