一  生成器

生成器的本质就是迭代器

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
View Code

相关文章: