一.什么是生成器 (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 item in obj:
print(item)
'''
=====>first
1
=====>sencond
2
=====>third
3
'''
------------------------------------------------------------