- A+
所属分类:python基础入门
生成器:
当我们创建一个列表时,如果列表的长度过大,会浪费内存,而且我们可能只会使用其中的几个元素,因此在python中还有一种一边循环一遍计算的机制,——生成器
生成器可以看做为一种方式,需要时才会产生,节约计算机资源
创建生成器的方式有
类似列表生成式:
把列表生成式的[] 换成()使用next函数访问下一元素
访问越界异常
在函数里边加入yield
著名的斐波拉契数列(Fibonacci),除第一个和第二个数外,任意一个数都可由前两个数相加得到:
1, 1, 2, 3, 5, 8, 13, 21, 34, ...
使用yield创建生成器
注意生成器调用时,不会执行,当使用next()访问时,才执行,执行顺序如图
从函数的开始执行到while循环里边,使用next()的起点为yield,终点也是yield,注意在上图的3、4完成后判断是否满足循环条件,
生成器是这样一个函数,它记住上一次返回时在函数体中的位置。对生成器函数的第二次(或第 n 次)调用跳转至该函数中间,而上次调用的所有局部变量都保持不变。
生成器不仅“记住”了它数据状态;生成器还“记住”了它在流控制构造(在命令式编程中,这种构造不只是数据值)中的位置。
生成器的特点:
节约内存
迭代到下一次的调用时,所使用的参数都是第一次所保留下的,即是说,在整个所有函数调用的参数都是第一次所调用时保留的,而不是新创建的
我的微信公众号
爱真理,得永生! 爱在灵灵久博客,网罗天下,福利大家!