生成器的本质---迭代器

生成器的产生有两种方式:生成器函数和生成器表达式。

只要含有yield关键字的函数都是生成器函数,yield只能用在函数里,且yield和return不能共用。

生成器函数

#生成器函数:执行之后会得到一个生成器作为返回值

最简单的生成器:步骤1->4(generator)->4(ret)->5->6->2->3

1.def generator():

2.  print(1)  

3.  yield

4.ret=generator()

5.print(ret)

6.print(ret.__next__())

yield:作为代码并不会结束一个函数

结果为

结果为

 

 因为生成器也是一种迭代器,所以可以进行for循环遍历。

在下面一个例子中,我们产生的这个生成器是可以打印123的,但是会报错。