我知道我的问题看起来很宽泛,但我希望这个问题的答案能为我提供正确的阅读方向。我是 Tornado 框架的新手,基本上我是 Python 的新手。 我正在调查这个 project : 你能给我解释几行代码吗:
@gen.coroutine
def get_me(self):
raise gen.Return((yield self._api.get_me()))
@gen.coroutine
注解有什么用?raise
关键字用于异常,不是吗?为什么我们在这里使用它?- 为什么我们以
generator
的形式返回所有内容。是 Tornado 框架使用生成器的概念。是什么原因?
最佳答案
@gen
是一个 decorator ,它会在定义时修改它下面的函数。- 它使用
raise
来返回值,并用except gen.Return
捕获它(我觉得它很丑,但它有效)。 - 生成器是避免内存使用并允许 lazy programing 的便捷方式, 总是尝试 to return a generator over an iterator .
关于python - @gen.coroutine 注解的理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37612712/