首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python中的协程

python中的协程
EN

Stack Overflow用户
提问于 2011-10-26 11:03:05
回答 1查看 2.6K关注 0票数 4

我从一本书中读到了以下代码,并对此有一些问题。

代码语言:javascript
复制
def coroutine(func):
    def start(*args, **kwargs):
        g = func(*args, **kwargs)
        g.next()
        return g
    return start

@coroutine
def receiver():
    print("Ready to receive")
    while True:
        n = (yield)
        print("Got %s" % n)

r = receiver()
r.send("hello, world")

通过使用coroutine,不需要初始.next()。我的理解是,如果是r = receiver(),那么就是r = start,所以当我调用r.send()时,它等于start.send(),然后我再次调用.next(),对吧?但是结果并不是我所期望的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-26 12:06:46

你的问题不是协程。你误解了函数装饰器。在r = receiver()之后,r不是开始,而是g。仔细阅读函数修饰,你就会明白是怎么回事了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7898296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档