码迷,mamicode.com
首页 > 其他好文 > 详细

24_生成器

时间:2018-02-06 20:29:37      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:地方   迭代   ext   转化   推导式   需要   可迭代对象   int   使用   

一、生成器概念

生成器不会把结果保存到一个系列中,而是保存生成器状态,在每次迭代的时候返回一个值,直到遇到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_生成器

标签:地方   迭代   ext   转化   推导式   需要   可迭代对象   int   使用   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!