函数中有yield 的就是生成器函数(替代了return)
本质就是迭代器 一个一个的创建对象 节省内存
1.创建生成器
最后以yield结束
1. 通过⽣成器函数
2. 通过各种推导式来实现⽣成器
3. 通过数据的转换也可以获取⽣成器
2.send用法
send 和 __next__都是下一个的意思
但send可以给上一个yield 位置传值 不能给最后⼀个yield发送值. 在第⼀次执⾏⽣
成器代码的时候不能使⽤send()
3.yield from
把一个yield from循环完再循环下一个yield from
二.推导式
(只有列表,字典,集合 . 没有元组)
1. 列表推导式 [ 结果 for循环 if 条件]
2.字典推导式
{ 结果(k,v) for循环 if 条件}
3.集合推导式
{k for循环 if 条件}
集合的特点: ⽆序, 不重复. 所以集合推导式⾃带去重功能
三.生成器函数
1.生成器表达式
(i for i in range(10))
2.可以使用for循环来循环这个生成器
3.生成器表达式也可以进行筛选
4.⽣成器的惰性机制:
⽣成器只有在访问的时候才取值.