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的运行。或者看下上面的那个参考文章链接

猜你喜欢

转载自blog.csdn.net/rongDang/article/details/83338927