一 生成器
生成器的本质就是迭代器
1 生成器的特点和迭代器一样 取值方式和迭代器一样(_next_(),send():给上一个yield传值
2 生成器一般由生成器函数或者生成器表达式来创建
3 其实就是手写的生成器
4 在pytion中有三种方式来获取生成器
通过生成器函数
通过各种推导式来实现生成器
通过数据的转换也可以获取生成器
特点:
1 惰性机制
2只能向前
3节省内存
list中拿数据是全部一起拿,不是一个一个拿,里面有__next__ for 循环中也有__next__
列如:
def func(): print("111") return 222 return返回一个值 ret =func() print(ret)
结果:
111
222
将函数中的return换成yield就是生成器
1 def func(): 2 print("111") 3 yield 222 yield 就是一个生成器函数 4 ret =func() 形成一个生成器 5 print(ret)
结果:
<generator object func at 0X10597ff68>
通过执行_next_()来执行以下生成器
1 def func(): 2 print("111") 3 yield 222 4 genner =func() 这个时候函数不会执行 而是获取生成器 5 ret =genner.__next__() 这个时候函数才能执行 yield的作用和return一样 也是返回数据 6 print(ret) 7 8 9 结果: 10 111 11 222