首页 > 其他 > 详细

24_生成器

时间:2018-02-06 19:10:34      阅读:210      评论:0      收藏:0      [点我收藏+]

一、生成器概念

生成器不会把结果保存到一个系列中,而是保存生成器状态,在每次迭代的时候返回一个值,直到遇到StopIteration异常结束。并且生成器实现了迭代器协议,所以生成器就是可迭代对象。所以生成器的本身就是迭代器。

实现生成器的方式:

1.可以使用生成器函数

2.可以使用各种推导式构建迭代器

3.可以通过数据转化

二、yield的功能

yield语句一次返回一个结果,在每个结果中间,挂起函数状态,下次运行时在它离开的地方继续向下执行。

 1 def genner():
 2     print(111)
 3     yield 222
 4     print(333)
 5     yield 444
 6     print(555)
 7     yield 666
 8 g = genner()
 9 #print(g)  print(g)
10 ‘‘‘
11 111
12 222
13 333
14 444
15 ‘‘‘
16 print(g.__next__())
17 print(g.__next__())

yield 的功能:

1.函数中使用yield,可以将函数变成生成器

2.返回给调用者的值

3.并将指针停留在当前位置 

生成器方法调用时,不会立即执行,需要调用next()方法,或者for循环来执行,使用for循环不用自己捕获StopIteration异常。

 

24_生成器

原文:https://www.cnblogs.com/weihengblog/p/8423586.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!