首页 > 编程语言 > 详细

Python 生成器

时间:2020-06-14 12:03:14      阅读:41      评论:0      收藏:0      [点我收藏+]

1、什么是Python 生成器(generator)

   简单来理解,python 生成器是指一边生成一边计算的机制。

 

2、作用:

  当有海量数据时,如果所有数据全部在内存里面,会占用很多的内存空间,例如:只想用列表前面的几个数据,后面没用到的数据就会占据大量内存空间。

     如果列表元素按照某种算法推算出来,那我们就可以在循环的过程中不断推算出后续的元素,这样就不必创建完整的list,从而节省大量的空间

     所以:又想要得到庞大的数据,又想让它占用空间少,那就用生成器

 

3、generator创建方式

方式一:

if __name__ == __main__:
    str_generator = (x for x in abcdefghijklmn)
    print(str_generator)

<generator object <genexpr> at 0x0000022C54885308>

方式二:函数中带yield关键字

def foo():
    for i in abcdefghijklmn:
        yield i

if __name__ == __main__:
    for i in foo():
        print(i)

 

4、工作原理:

  1、生成器(generator)能够迭代的关键是它有一个next()方法,重复调用next()方法,直到捕获一个异常

       2、带有 yield 的函数不再是一个普通函数,而是一个生成器generator

  3、yield相当于 return 返回一个值,并且记住这个返回的位置,下次迭代时,代码从yield的下一条语句开始执行

       4、.send() 和next()一样,都能让生成器继续往下走一步(下次遇到yield停),但send()能传一个值,这个值作为yield表达式整体的结果

 

5、总结:

   生成器仅仅保存了一套生成数值的算法,并且没有让这个算法现在就开始执行,而是我什么时候调它,它什么时候开始计算一个新的值,并给你返回。

 

Python 生成器

原文:https://www.cnblogs.com/zhouzhiwei/p/13124119.html

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