SyntaxError:异步函数内部的“ yield from”
async def handle(request):
for m in (yield from request.post()):
print(m)
return web.Response()
以前使用过python3.5,找到了pep525,安装了python3.6.5,仍然收到此错误。
答案 0 :(得分:2)
您正在使用新的async
/ await
语法来定义和执行协同例程,但是尚未进行完全切换。您需要在此处使用await
:
async def handle(request):
post_data = await request.post()
for m in post_data:
print(m)
return web.Response()
如果您想使用Python 3.5之前的旧语法,请使用@asyncio.coroutine
decorator将函数标记为协程,并放下async
关键字,而改用yield from
之await
:
@async.coroutine
def handle(request):
post_data = yield from request.post()
for m in post_data:
print(m)
return web.Response()
,但是该语法正在逐步淘汰,并且不像新语法那样容易发现和可读。仅在需要编写与旧Python版本兼容的代码时,才应使用此表单。