def fun():
for x in range(10):
yield(x*2)
x=fun()
print(next(x))
print(next(x))
print(next(x))
输出:
0
1
4
这个例子,里面包含了一些信息。
1 fun() 中因为有了 yield 所以,这个函数变成了一个 generator(生成器)
2 x=fun() 这里并不是一次性返回fun() 的值, 相当于一个声明, x的值来自于 fun()这个 生成器(generator) 生成。
3 x 的值到底是多少呢? 由next 方法来得到。 next 方法是 generator的方法。
4 函数执行到yield 的时候,就相当于保存当前函数各个参数的值 然后返回 x*2的值, 相当于 step1: 保存环境 step2: return x*2
5 再一次执行 next(x) 的时候,相当于恢复上次的各个参数,继续执行,直到再次遇到yield(x*2)