我熟悉 yield 以返回一个值,这主要归功于这个问题
但是当它位于作业的右侧时,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
在研究状态机和协程时,我在此博客的代码示例中遇到了这一点。