Python零基础入门学习28:高级特性之生成器函数

:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性。

本文阅读时间约为2分钟

什么是生成器

生成器(generator)是用来创建数据序列的一种对象。
使用生成器可以迭代庞大的血液,且不需要在内存中创建和存储整个序列。
生成器通常是为迭代器产生数据的。

生成器函数

生成器推导式可以创建比较简单的序列;如果要创建一个比较大的序列,则需要生成器函数来实现。

生成器函数与普通函数不同的地方,在于将return换成了yield。

def even_number(max):
    n = 0
    while n < max:
        yield n
        n += 2
生成器和yield关键字

yield跟生成器息息相关。包含yield语句的函数就是一个生成器。

生成器每次产生一个值(yeild语句),函数被冻结,直到被唤醒后再产生一个值。

yield语句一般与循环搭配在一起。

生成器的本质就是迭代器,因此yield可以看作是可迭代的return,return只能返回一次,而yield可以迭代性地返回多次。

def gen(n):
    for i in range(n):
        yield i ** 2
     
for i in gen(5):
    print(i, " ", end="")

0  1  4  9  16  

list(gen(5))  #gen(5)是一个生成器generator。
Out[3]: [0, 1, 4, 9, 16]
生成器的优势

生成器相比一次列出所有内容的列表等的优势是:

  • 更节省空间;
  • 更快的响应速度;
  • 更加灵活的使用。

To be continued.

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容