python day 13 生成器 以及 推导式
1、生成器的本质是迭代器
2、生成器函数
def fn()
函数体
yield
fn()
g = fn()
此时这个g就是生成器
所以g 是可迭代的
g._ _next_ _
每执行一次_ _next_ _,函数就会走到yield 的位置。
·
生成器函数可以执行for 循环
生成器在进行list 操作时,内部也进行了_ _next_ _的操作
3、send
生成器除了_ _next_ _ ,还可以用send()进行下一步的操作,每次都会执行到yield。
4、推导式
列表推导式:
字典推导式
set集合推导式
生成器表达式
生成器表达式 和 列表推导式的区别
1)列表推导式比较耗内存,一次性加载。生成器表达式几乎不耗内存,使用的时候才会分配和使用内存。
2)列表推导式得到的是一个列表,生成器表达式得到的是一个生成器。
生成器表达式的惰性机制:生成器只有在访问的时候才取值。