美文网首页
Python with 上下文管理器

Python with 上下文管理器

作者: stefanlei | 来源:发表于2018-11-27 11:00 被阅读0次

转载请注明出处


with 如何工作 ?

with 实际上是由内部的 __enter__ 以及 __exit__ 实现的。
紧跟着 with 后面的语句被执行后,对象的 __enter__()就会被调用,这个方法的返回值,赋给 as 后面的变量
当 with 里面的代码块全部执行以后,就会调用对象的 __exit()__的方法

class Test(object):

    def __enter__(self):
        print('这是with开始')
        return 'as 后面的'
    def __exit__(self, exc_type, exc_val, exc_tb):
        print('这是with结束')
with Test() as f:
    print(f)

async with

异步上下文管理器指的是在enterexit方法处能够暂停执行的上下文管理器。
为了实现这样的功能,需要加入两个新的方法:__aenter____aexit__。这两个方法都要返回一个 awaitable类型的值。await就相当于 yield from

class AsyncContextManager:
    async def __aenter__(self):
        
        # 这里就相当于返回
        await log('entering context')
 
    async def __aexit__(self, exc_type, exc, tb):
        await log('exiting context')

相关文章

网友评论

      本文标题:Python with 上下文管理器

      本文链接:https://www.haomeiwen.com/subject/nrtgqqtx.html