yield的作用理解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了yield的作用理解相关的知识,希望对你有一定的参考价值。

参考技术A Python中的yield和java中的不同,java中的yield是妥协的意味,让出cpu给其他线程执行,但不保证让出成功。
python中的yield是停止当前函数跳出函数,停止状态的函数等待被调用激活,yield是生成器这是yield实现其功能所必须成为的样子。如函数1:

运行:
没有任何输出。这是因为有yield,函数并没有被执行。只是将foo()指向了g。
函数2:

运行:输出了starting和1,并没有输出ending,这是因为next(g)只调用了一次,运行到了yield就返回了,print函数打印了返回值:1。这个时候函数停止了,等待下一次的next(g)调用。

函数3:

运行:接着上面的,第二个next(g)运行,报错是因为遍历结束了,无yield了。解决方法就是在最好加一个yield。

函数4:

运行:这样就能运行到ending了。

yield的作用挺溜的,其丰富了函数的运行,让函数进入不同的运行阶段。

以上是关于yield的作用理解的主要内容,如果未能解决你的问题,请参考以下文章

yield-Python大牛必须掌握的高端语法

Java编程:Thread.yield() 的理解

@yield 和 @section 不起作用

Laravel 6 @yield() 在 include() 方法中不起作用

关于生成器---(yield)

PHP性能优化利器:生成器 yield理解