yield 是一个类似 return 的关键字,迭代一次遇到yield时就返回yield后面(右边)的值。重点是:下一次迭代时,从上一次迭代遇到的yield后面的代码(下一行)开始执行。
简要理解:yield就是 return 返回一个值,并且记住这个返回的位置,下次迭代就从这个位置后(下一行)开始。
asyncio 框架在python3.4之前用yield from,python3.5之后用async await。
yield版本:
@asyncio.coroutine
def init(loop):
app = web.Application(loop=loop)
app.router.add_route('GET', '/', index)
srv =yield from loop.create_server(app.make_handler(), '127.0.0.1', 9000)
logging.info('server started at http://127.0.0.1:9000')
return srv
async await 版本:
async def init(loop):
app = web.Application(loop=loop)
app.router.add_route('GET', '/', index)
srv =await loop.create_server(app.make_handler(), '127.0.0.1', 9000)
logging.info('server started at http://127.0.0.1:9000')
return srv
async 和for一起使用,语法:
async for TARGET in ITER:
SUITE
else:
SUITE2
async 和with一起使用,语法:
async with EXPRESSION as TARGET:
SUITE
网友评论