首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >异步函数Python 3.6.5aiohttp中的‘'yield’

异步函数Python 3.6.5aiohttp中的‘'yield’
EN

Stack Overflow用户
提问于 2018-07-30 03:47:52
回答 1查看 1.1K关注 0票数 0

SyntaxError:异步函数内部的“yield”

代码语言:javascript
复制
async def handle(request):
    for m in (yield from request.post()):
        print(m)
    return web.Response()

使用python3.5之前,找到pep525,安装python3.6.5,仍然收到这个错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-30 03:56:36

您正在使用新的async/await语法来定义和执行协同例程,但尚未进行完全切换。您需要在此处使用await

代码语言:javascript
复制
async def handle(request):
    post_data = await request.post()
    for m in post_data:
        print(m)
    return web.Response()

如果您想坚持使用Python3.5之前的旧语法,则使用@asyncio.coroutine decorator将函数标记为协程,删除async关键字,并使用yield from而不是await

代码语言:javascript
复制
@async.coroutine
def handle(request):
    post_data = yield from request.post()
    for m in post_data:
        print(m)
    return web.Response()

但这种语法正在被逐步淘汰,而且远不如新语法那么容易发现和可读性。只有在需要编写与旧版本的Python兼容的代码时,才应该使用此表单。

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

https://stackoverflow.com/questions/51583968

复制
相关文章

相似问题

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