当前位置: 首页 > 面试题库 >

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

养翔
2023-03-14
问题内容

主要由于这个问题,我对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

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


问题答案:

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

cr.send(1)

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

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



 类似资料: