python - App Engine 异步语法 - "raise"在此示例中有何作用?

标签 python google-app-engine

我试图理解 this page 中的这个代码块:

@ndb.tasklet
def get_cart_plus_offers(acct):
    cart, offers = yield get_cart_async(acct), get_offers_async(acct)
    raise ndb.Return((cart, offers))

在这种情况下,raise 是否仅充当return 语句?我通常将 raise 与引发错误联系起来,但这只是表达返回的一种方式吗?谢谢。

最佳答案

Tasklet 旨在成为生成器,在生成器中,返回 具有不同的语义;它结束生成器。因此,您不能使用 return 从 Python 2 中的生成器返回值:

>>> def foo():
...     yield None
...     return 1
... 
  File "<stdin>", line 3
SyntaxError: 'return' with argument inside generator

因此,您需要一种不同的机制来返回值并结束 tasklet;而是使用带有特殊异常类的 raise

关于python - App Engine 异步语法 - "raise"在此示例中有何作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23876186/

相关文章:

python - 如何修改自定义 Tensorflow 层中的图像? (提供工作示例)

python - 通过 UDP 发送字节列表

google-app-engine - 在谷歌云存储上存储数千个文件

python - Raspberry Pi Python 字符串未定义

python - bool 值比较日期时的极其奇怪的行为

Python:打开文件对话框没有出现,因为无法访问文本变量

google-app-engine - 将 Grails 应用程序移植到 GAE

java - 在 appengine 中使用 twitter4j 的正确方法

python - 如何使用 cursor() 进行分页?

python - push 部署工作,配置 "release pipeline"