python yield from

def kk():
    print (1)
    yield
    print (2)
    return 3
k=kk()
def hello(k):
    print("Hello world!")
    
    r = yield from k
    print(r,"Hello again!")
    yield
he=hello(k)    
next(he)
print ('---')
next(he)

打印结果:

hello world!

1

---

2

3 hello again! 

 

 

说明:1.yield from后面必须跟可迭代对象

2.yield from会把from后面的迭代器带入当前迭代器中进行迭代

3.,为了更好的理解yield from的作用,以下用一个等效于上述代码执行流程的代码加以解释,上述代码的执行过程等同于:

def hello():
    print("Hello world!")
    print (1)
    yield
    print (2)
    r=3       
    print(r,"Hello again!")
    yield
he=hello()
   
next(he)
print ('---')
next(he)

 

posted @ 2018-08-31 17:57  扫驴  阅读(212)  评论(0编辑  收藏  举报