Python-yield原理

yield关键字 实际上是生成了一个迭代器,如下:

1
2
3
4
5
6
7
8
9
10
def shushu(n):
for i in range(n):
print i
yield i
if __name__ == '__main__':
ss = shushu(10)
ss.next()

方法 shushu被封装成了一个generator,
调用next方法,程序会走到yield i的位置并且把i的值返回,
当下一次调用next方法是,程序又会执行到这个位置,直到循环结束。
在两次next调用中 去执行其他的代码的过程,其实就是在进行任务切换,也就实现了协程的效果