首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中,你必须使用协程而不是函数的东西是什么?

在Python中,你必须使用协程而不是函数的东西是什么?
EN

Stack Overflow用户
提问于 2015-08-27 08:47:38
回答 1查看 440关注 0票数 0

我正在发现Python协程,它很有意义。我知道它们是更“通用”的函数,有多个入口点和出口点,可以向不同的接收器返回值。但是,当以及为什么协程比常规函数更受青睐时,谁能给出一个总结?

EN

回答 1

Stack Overflow用户

发布于 2015-08-27 08:59:00

当它们比常规函数更容易为您的用例创建时。这可能意味着许多不同的事情,所以这里有一个例子:

您有一个读取和发送数据的服务器,但是您正在实现一个具有某种状态的协议。现在你有两个选择:

使状态显式,并将其保存在某个对象中,然后您将得到如下设计:

代码语言:javascript
复制
class ClientConnection():
    def __init__(self):
        self.current_state = START

    def new_data(self, data):
        if self.current_state == START:
            self.current_state = do_auth(data)
        elif self.current_state == SOMETHING_ELSE:
            self.current_state = do_something_else(data)
        elif ...

或者将状态设为隐式,然后一遍又一遍地输入相同的函数:

代码语言:javascript
复制
def connection(self):
    auth_data = yield
    if not do_auth(auth_data):
        raise something

    more_data = yield(AUTH_OK)
    yield from do_something_else(more_data)
    ...

现在,如果您有一个巨大的状态机,并且流程不是微不足道的,那么第一种选择可能更好。如果你有一个更简单的情况(auth,get命令,发送结果),第二个选项可能更好。

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

https://stackoverflow.com/questions/32238949

复制
相关文章

相似问题

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