zoukankan      html  css  js  c++  java
  • With语句上下文管理

    在平时工作中总会有这样的任务,它们需要开始前做准备,然后做任务,然后收尾清理....比如读取文件,需要先打开,读取,关闭

    这个时候就可以使用with简化代码,很方便

    1.没有用with语句

    1
    2
    3
    = open ('./test.txt')
    f.read()
    f.close()

    2.使用with语句

    1
    2
    with open('./test.txt') as f:
        f.read()

    with的工作原理是?

    with 中包含  __enter__  与 __exit__  方法, 执行顺序是,在with下面语句未执行前,先执行__enter__方法,with下语句执行结束后,最后执行__exit__.

    自定义一个上下文管理协议,看一下它的原理

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class Context():
        def __enter__(self):
            print('start')
            return self
        def __exit__(self,*unused):
            print('over')
        def dosomething(self):
            print('dosomething')
     
     
    with Context() as ctx:
        ctx.dosomething()

    打印结果

    start

    dosomething

    over

    1
    <em id="__mceDel"><em id="__mceDel"><br><br></em></em>
    小雪 博客地址:https://home.cnblogs.com/u/snow-l/
     
     
  • 相关阅读:
    curl 命令行使用参考
    PHP 输出json_encode 空白的检查
    RAM和ROM
    浮点数
    负数补码
    位运算
    无法加载文件 C:UsershuangshiminAppDataRoaming pmwechat-terminal.ps1,因为在此系统上禁止运行脚本
    windows + php + shell_exec 执行失败的可能原因
    Ubuntu 发送邮件
    红黑树
  • 原文地址:https://www.cnblogs.com/mengbin0546/p/10728372.html
Copyright © 2011-2022 走看看