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

29.generator

时间:2017-06-06 01:05:21      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:span   函数   移除   logs   生成   div   ges   技术   __next__   

generator

1.生成器函数:

       函数中有yield的就是生成器函数,执行生成器函数得到一个生成器,生成器具备生成某些东西的能力

       yield具有返回值,退出函数体,保留进度的功能,下次调用__next__功能继续从当前位置开始执行

 

2.生成器:

       生成器函数的产物

 

3.生成器的意义:

       python2.7中的xrange就是一个生成器函数,但是在3.6中已经被移除

#!/usr/bin env python
# -*- coding:utf-8 -*-
# python 2.7
print(range(10))
print(xrange(10))
‘‘‘
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
xrange(10)
‘‘‘

  其意义在于:range(10)会在内存中一次性生成10个元素,而xrange(10)却得到一个生成器,在需要用的时候再生成某个元素,节约内存

 

4.在python3中用生成器实现xrange函数

def xrange(n):
    print(‘start‘)
    start = 0
    while start < n:
        yield start
        start += 1

obj = xrange(5)
n1 = obj.__next__()
n2 = obj.__next__()
n3 = obj.__next__()
n4 = obj.__next__()
n5 = obj.__next__()
n6 = obj.__next__()
#n7 = obj.__next__()
print(n1, n2, n3, n4, n5, n6)

 

5.生成器执行流程

技术分享

 

  

29.generator

标签:span   函数   移除   logs   生成   div   ges   技术   __next__   

原文地址:http://www.cnblogs.com/wuwen19940508/p/6947603.html

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