分配产生的收益是什么?myVar =(收益)

发布于 2021-01-29 15:24:28

主要由于这个问题,我对yield返回值很熟悉

但是当收益在任务的右边时,收益又会如何呢?

@coroutine
def protocol(target=None):
   while True:
       c = (yield)

def coroutine(func):
    def start(*args,**kwargs):
        cr = func(*args,**kwargs)
        cr.next()
        return cr 
    return start

在研究状态机和协程时,我在本博客的代码示例中遇到了这个问题。

关注者
0
被浏览
46
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    yield函数中使用的语句将该函数转换为“生成器”(创建迭代器的函数)。通常,通过调用来恢复生成的迭代器next()。但是,可以通过调用方法send()而不是next()继续将值发送给函数:

    cr.send(1)
    

    在您的例子,这会赋值1c各一次。

    cr.next() 实际上等效于 cr.send(None)



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看