首页 > 技术文章 > 🍖生成器

songhaixing 2020-12-08 16:59 原文

一.什么是生成器 (generator)

  • 生成器就是一个自定义的迭代器
  • 函数体内含有 yield 关键字

二.为何要使用生成器

  • 为了节省内存

三.创建生成器的两种方式

  • 调用带 yield 关键字的函数
  • 使用生成器表达式

四. yield 关键字

  • 函数体内但凡出现 yield 关键字
  • 调用函数将不会触发函数体代码的运行
  • 而是会返回一个生成器对象,生成器本质就是一个迭代器
def chicken():
    print('=====>first')
    yield 1
    print('=====>sencond')
    yield 2
    print('=====>third')
    yield 3

obj=chicken()
print(obj)       # <generator object chicken at 0x000002CEE1A7AAC8> 是一个生成器, 一只老母鸡
  • 生成器本质就是迭代器,也就是说生成器的玩法其实就是迭代器的玩法
print(obj.__iter__() is obj)  # True
print(next(obj))              # =====>first    1
print(next(obj))              # =====>sencond  2         
print(next(obj))              # =====>third    3                   
  • 使用 for 循环来验证
for item in obj:
    print(item)
'''
=====>first
1
=====>sencond
2
=====>third
3
'''
------------------------------------------------------------

推荐阅读