这意味着这个函数变成了一个生成器函数,调用它时会返回一个生成器对象,而不是直接执行函数体
生成器对象是一个迭代器,它实现了 __iter__
和 __next__
方法
。__iter__
方法返回生成器对象自身,而 __next__
方法用于获取生成器的下一个值
。当 __next__
方法被调用时,生成器会从上次暂停的地方继续执行,直到遇到下一个 yield
语句
。如果生成器执行完毕,没有更多的值可以返回,就会抛出 StopIteration
异常
yield
关键字的函数。当调用生成器函数时,它不会直接执行函数体,而是返回一个生成器对象def my_generator():
yield 1
yield 2
yield 3
调用生成器函数时,会返回一个生成器对象。这个生成器对象是一个迭代器,它实现了 __iter__
和 __next__
方法
gen = my_generator()
# 使用 next() 方法获取生成器的下一个值 print(next(gen)) # 输出 1 print(next(gen)) # 输出 2 print(next(gen)) # 输出 3 # 再次调用 next() 方法,会抛出 StopIteration 异常 try: print(next(gen)) except StopIteration: print("迭代结束")1 2 3 迭代结束