async await 和yield from

2020-05-19  本文已影响0人  土豆特别想爬山

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

上一篇 下一篇

猜你喜欢

热点阅读