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

7、生成器

时间:2017-07-19 11:50:43      阅读:102      评论:0      收藏:0      [点我收藏+]

标签:python   int   作用   函数   内存   数据   gen   运行   --   

1、生成器:在python中一边循环一边计算的机制,成为生成器,只有一个next方法,generator.
创建生成器方法1:用列表生成式的方法
L = [X*2 for x in range(10)]
p = (x*2 for x in fange(10)) 把[]改成()
next() 并且用next()一个个取值,节约了大量的内存空间
 
创建生成器方法2
例1 def creatnum(): #斐波那契数列
a,b = 0,1
for i in range(10):
  print(b)
  a,b = b ,a+b
creatnum()
 
def creatnum():
  a,b = 0,1
  for i in range(10):
     yield b                                有就不是函数,就是生成器,不能调用这个函数
  a,b = b ,a+b
f =creatnum()         用一个变量来保存,f 是生成器对象
next()                
next() 从上次那里开始执行               使用了yield的函数就是生成器,不再是函数
 
使用了yield的函数就是生成器,不再是函数
yield关键字有两点作用:
暂停执行,
将yield关键字后面表达式的值作为返回值返回,起到了return的作用
 
可以使用next()函数让生成器从断点处继续执行,即唤醒生成器(函数)
Python3中的生成器可以使用return返回最终运行的返回值,而Python2中的生成器不允许使用return返回一个返回值
(即可以使用return从生成器中退出,但return后不能有任何表达式)。
---------------------------------------------------------------------------------------------------------------------------------------------
2、唤醒 def gen():
i=0
while<0:
  temp = yield i                      temp 返回为none
  print(temp)
  i +=1
f = gen()
方式1 next() f.__next__()
方式2 f.send () 唤醒的同时向断点处传入一个数据
f.send (None)
------------------------------------------------------------------------------------------------------------------

7、生成器

标签:python   int   作用   函数   内存   数据   gen   运行   --   

原文地址:http://www.cnblogs.com/lvhonglei-python/p/7204586.html

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