1 yield
和next
在一个函数中添加了yield
关键字之后,该函数在调用时会变成一个生成器。通过使用next
关键字可以使该生成器运行到第一个yield处停止。再次使用next,使代码接着上次停止的地方运行至下一个yield(如果没有则结束)。
下面的代码显示了函数和生成器的异同点:
def generator():
print("debug 1")
yield 1
print("debug 2")
yield 2
print("debug 3")
yield 3
print("print_1: ", type(generator))
print("print_2: ", type(generator()))
输出结果为:
print_1: <class 'function'>
print_2: <class 'generator'>
使用next
来使用生成器,通过打印结果可以看出其执行顺序。如下:
G = generator()
print("print_3: ", next(G), "\n")
print("print_4: ", next(G), "\n"