什么是生成器?
本质就是迭代器,与迭代器的唯一区别就是生成器是我们自己用python代码构建的。
产生生成器的方式
1.生成器函数----yield:
def func():
puber = (1,3,34,4)
for i in puber:
yield i
ret = func()
print(next(ret))
print(next(ret))
print(next(ret))
print(next(ret))
#yield 不结束函数,给next返回值,多个值以元组形式返回
#只要函数中出现yield那么该函数就是生成器函数,一个yield对应一个next
生成器非常节省内存,与指针类似,需要哪个加载哪个
def eat_baozi():
for i in range(1,1001):
yield f'{i}号包子'
ret = eat_baozi()
print(next(ret))
print(next(ret))
生成器函数---yield from:解决内存循环问题
def func():
list = []
for i in range(1,4):
list.append(i)
yield from list
ret2 = func()
print(next(ret2))
print(next(ret2))