zoukankan      html  css  js  c++  java
  • Python with语句

    直接把参考的文章放上面吧 :这个更专业,可以直接看这个。

    首先with的作用:  

    使用with后不管with中的代码出现什么错误,都会进行对当前对象进行清理工作。

    例如file的file.close()方法,无论with中出现任何错误,都会执行file.close()方法

    其次with只有特定场合下才能使用。,这个特定场合只的是那些支持了上下文管理器的对象。

    这些对象有:

    file
    decimal.Context
    thread.LockType
    threading.Lock
    threading.RLock
    threading.Condition
    threading.Semaphore
    threading.BoundedSemaphore

    那么什么是上下文管理器:

      这个管理器就是在对象内实现了两个方法:__enter__() 和__exit__()

      __enter__()方法会在with的代码块执行之前执行,__exit__()会在代码块执行结束后执行。

      __exit__()方法内会自带当前对象的清理方法。

    with语句类似

      try :

      except:

      finally:

    的功能:但是with语句更简洁。而且更安全。代码量更少。

    with 用法:

    格式:

    with context_expression [as target(s)]:
            with-body

    例子:

    with open(r'somefileName') as somefile:
            for line in somefile:
                print line
                # ...more code

    with后面为一个表达式,表达式返回的是一个上下文管理器对象,我的理解就是表达式的返回结果。使用as 可以将这个结果赋值给某个变量。方便之后操作。

    一个感觉更牛掰的例子:

    nested 函数:

    with nested(A(), B(), C()) as (X, Y, Z):
             # with-body code here

    等同于:

    with A() as X:
        with B() as Y:
            with C() as Z:
                # with-body code here        

    直接with后面的表达式就是个方法。并且把连着三个函数的方法直接赋值给不同变量。

    上下文管理器可以自定义。也可以重写__enter__()和__exit__()方法。

  • 相关阅读:
    vue 下载模板
    vue 使用XLSX 导入表格
    el-select 同时传递多个参数 id value.
    关于前端node 内存溢出
    js判断输入是否含有空格
    python中的内置函数总结
    Python的数据类型和常用方法大全
    简单认识python的数据类型和语法
    Part1.1 、RabbitMQ 操作使用
    Part1.2 、RabbitMQ -- Publish/Subscribe 【发布和订阅】
  • 原文地址:https://www.cnblogs.com/lyfstorm/p/11063209.html
Copyright © 2011-2022 走看看