美文网首页
Python笔记:yield使用浅析——一文理解yield

Python笔记:yield使用浅析——一文理解yield

作者: 闲酿星河 | 来源:发表于2021-10-27 19:24 被阅读0次

   带有 yield 的函数在 Python 中被称之为 generator(生成器),简单的说,就是带有yield是函数不再是普通的函数。

   那么带有yield的函数和普通的函数究竟有什么区别?


这里通过下面的这个例子进行说明:

# 带有yield的函数
def ff():
    print("运行到这儿了")
    while True:
        y = yield 4
        print("y=", y)
f = ff()
print(type(f))
print(next(f))
print("执行下一次")
print(next(f))

上面这行代码执行的结果为:

#带有yield的函数输出
 <class 'generator'>
运行到这儿了
4
执行下一次
y= None
4

    可以看出来,当带有yield的函数被调用时,函数并不会被执行, 而是先得到一个generator对象。

    当执行到第一个print(next(f))代码处,调用next方法时,才开始执行函数内的 print("运行到这儿了") 代码,然后进入while循环,执行到了 y = yield 4 代码处,返回了一个4。

    然后执行了print("执行下一次")代码。

    之后开始执行第二个 print(next(f))代码,这一次从上一次停止执行的地方开始执行,也就是执行给y赋值的操作,但是之前执行到yield 4 时,直接返回了并没有赋值给y,所以这时候输出的y= None。然后继续函数内的while循环,直到执行到 y = yield 4 代码,再次返回了4。


   总结:当函数使用yield后成为生成器(generator),只能用于迭代操作。在调用生成器的过程中,每次遇到yield函数会返回yield的值,在下一次执行next()方法时,就会从上一次退出的位置继续运行。所以使用yield时,只有使用时才会产生数据,消耗内存。

相关文章

网友评论

      本文标题:Python笔记:yield使用浅析——一文理解yield

      本文链接:https://www.haomeiwen.com/subject/lmjyaltx.html