生成器 :含有yield 的关键字的函数就是一个生成器。
生成器的运行原理:调用函数时,当函数运行到yield时停止,返回值,下次调用时,就从这次的yield出继续执行,局部变量还是使用这次变量的值。相当于函数在yield被冻结,下次继续在yield处继续执行。
为什么要使用生成器 。
生成器相比一次列出所有的内容的优势:
1.更节省存储空间
2.响应更迅速
3.使用更灵活
举个例子:
生成器写法:
def gen(n) for i in range(n) yiled i**2 for i in gen(5) print(i," ",end=" ")
0 1 4 9 16
普通写法:
def square(n) ls = [i**2 for i in range(n)] return ls for i in square(5): print(i," ",end =" ")
0 1 4 9 16