美文网首页
python with 详解

python with 详解

作者: 如果仲有听日 | 来源:发表于2020-03-03 12:43 被阅读0次

    1. 先看一个例子

    with open('./test.txt', 'wb') as f:

        f.write('aaaaaaaaaaaa')

    上例等价于下面的代码:

    f = open('./test.txt', 'wb')

    try:

        f.write('aaaaaaaaaaaa')

    except Exception:

        pass

    finally:

        f.close

    可见, 当使用with时,with open('./test.txt', 'wb') as f:

    就是将open出来的文件描述符as为f,之后再对f进行写数据,写完数据后with这个上下文管理器会将f进行close, 并且能够捕获异常

    因此with是一个上下文管理器

    2. with上下文管理器原理

    我们通过自定义一个类来理解with的原理。

    class ContextManager(object):

        def __enter__(self): #进入with语句时调用

            print("__enter__ called")

        def __exit__(self, exc_type, exc_val, exc_tb): #离开with语句时调用

            print('__exit__ called')

            print('exc_type: %s' % exc_type) #异常类型

            print('exc_val: %s' % exc_val)        #异常值

            print('exc_tb: %s' % exc_tb)            #异常追踪信息

    #debug1

    with ContextManager() as cm:

        print('hello python')

    #debug 2

    with ContextManager() as cm:

        a = 1 / 0

        print('hello python')

        

    相关文章

      网友评论

          本文标题:python with 详解

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