本文主要是介绍yield from的具体用法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Python3.3新增的yield from表达式句法可把一个生成器的工作委托给一个子生成器。
在引入yield from之前,如果一个生成器根据另一个生成器生成的值产生值,则需要使用for循环。
def sub_yield():yield 1.1yield 1.2yield 1.3def main_yield():yield 1for s in sub_yield():yield syield 2yield 3for i in main_yield():print(i)
# 输出
# 1
# 1.1
# 1.2
# 1.3
# 2
# 3
使用yield from也能达到这样的效果,并且代码看起来更优雅!
def sub_yield():yield 1.1yield 1.2yield 1.3def main_yield():yield 1yield from sub_yield()yield 2yield 3for i in main_yield():print(i)
上面代码for循环是客户代码,main_yield是委托生成器,sub_yield是子生成器。yield from暂停main_yield,sub_yield接手,直到它耗尽。sub_yield产生的值会绕过main_yield,直接传给客户代码的for循环使用。在此期间,main_yield处于暂停状态,看不到绕过它的那些值,当sub_yield耗尽后,main_yield恢复执行。
子生成器中有return语句时,返回一个值,在委托生成
这篇关于yield from的具体用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!