Python 生成器和生成器表达式
一. 生成器
什么是生成器?
生成器实质就是迭代器.在python中有三种方式来获取⽣生成器:
1. 通过⽣成器函数
2. 通过各种推导式来实现生成器
3. 通过数据的转换也可以获取生成器
def func(): print("111") return 222 ret = func() print(ret) 结果: 111 222
def func(): print("111") yield 222 ret = func() print(ret) 结果: <generator object func at 0x10567ff68>
yield 是分段执行这个函数体
生成器函数在执行的时候返回生成器. 而不是直接执行此函数
能向下执行的两个条件:
__next__(), 执行到下一个yield
send(), 执行到下一个yield, 给上一个yield位置传值
生成器的优点和特点
优点: 节省内存, 生成器本身就是代码. 几乎不占用内存
特点: 惰性机制, 只能向前. 不能反复
生成器表达式
(结果 for循环 if)