zoukankan      html  css  js  c++  java
  • Python之上下文管理协议

    一、上下文管理协议

    <1>常规操作3步open:  

    1.f = open('a.txt')  

    2.对文件的操作  

    3.f.close()  

    上边两种操作 第二种操作因为打开文件之后必须关闭,不关闭占用内存的资源  

    而上下文管理协议就不会,  

    内存采用回收机制自动的去把对象清理掉  

    好处就是可以在exit方法中自动释放资源

    <2>with

    with open('a.txt') as f:
      '代码块'
    上述就是上下文管理协议 __enter__ __exit__

     1 class Foo:
     2 
     3     def __init__(self, name):
     4         self.name = name
     5 
     6     def __enter__(self):
     7         print('执行enter方法')
     8         return self
     9 
    10     def __exit__(self, exc_type, exc_val, exc_tb):
    11         print('执行exit方法')
    12         print(exc_type)  # <class 'NameError'>
    13         print(exc_val)   # name 'aaaaaaaaa' is not defined
    14         print(exc_tb)    # <traceback object at 0x000001A2BAF90F08>
    15 
    16 
    17 with Foo('a.txt') as f:   # 触发enter
    18     print(f)
    19     # print(aaaaaaaaa)   # 报错直接触发exit
    20     print(f.name)  # 代码块处理完毕之后 触发exit
    21 
    22 print('1111111111111')

     

  • 相关阅读:
    Object类的方法简记
    run()和start()调用问题简记
    面向对象设计
    关于JVM的简记
    操作运算符的简记
    jdbc简记
    synchronized的简记
    垃圾回收的一些简记
    java.io.IOException: Stream closed
    Java-文件名、目录名或卷标语法不正确
  • 原文地址:https://www.cnblogs.com/Alexephor/p/11219031.html
Copyright © 2011-2022 走看看