python中的yield使用
关于python中yield的使用,以前学习时有大概理解yield是怎么用,用文档做了笔记,但后面再看到yield时发现关于yield的理解和用法都忘记的差不多了,以前的笔记文档也没有找到,所以这里记录下关于yield的使用。
参考文章: 这里
yield的使用
yield是用在函数中的,带有yield的函数不再是一个普通函数,而是一个生成器(generator),可以用于迭代,它不像 列表 那些迭代对象,迭代时数组中所有的数据都在内存中,如果数组中有海量数据那么迭代的将非常耗内存。生成器就不一样,可以只读取它一次,在用它的时候才生成。
yield 是一个类似于return 的关键字,迭代一次遇到yield 时就返回 yield后面的值。 在下一次迭代时, 从上一次 迭代遇到的yield后面的代码开始运行,简单的说: yield就是 return 返回一个值,并且记住这个返回的位置,下次迭代就从这个位置后(下一行)开始。
下面我们通过一个斐波拉契数列的案列来看下关于yield的使用:
def fab(max):
n, a, b = 0, 0, 1
while n < max:
# 运行到此处就会返回b的值,下次运行从a, b = b, a + b 这句代码开始
yield b
a, b = b, a + b
n = n + 1
c = fab(10)
for i in fab(64):
print(i)
基本通过这个案例就可以知道yield是怎么使用的了,这里如果你对yield的流程还是不怎么理解,你可以通过pycharm的Debug调试来看yield的运行。或者看下上面的那个参考文章链接