飞道的博客

神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(python上下文管理器)

411人阅读  评论(0)

with语句

使用with语句替代try-finally 语句,代码更加的简洁清晰

对于需要对资源进行访问的任务,无论在代码运行过程中,是否发 生异常,都会执行必要的清理操作,释放资源。

1.


  
  1. with open( r"D:\code1\pythontest\mypython.txt") as f:
  2. print(f.read())

2.


  
  1. with open( r"D:\code1\pythontest\mypython.txt") as f:
  2. print(f.read())
  3. print(f.read())

3.


  
  1. with open( r"D:\code1\pythontest\mypython.txt", "w") as f:
  2. print(f.read())

上下文管理器

上下文管理器是Python中的一种协议,它保证了每次代码执行的一致性

一旦进入上下文管理器,就一定会按照规定的步骤退出

如果合理的设计了退出上下文管理器的步骤,就能够很好的处理异常

上下文管理器被最多用到的场景是资源清理操作

实现上下文管理器,只要在类定义时,实现__enter__()方法和__exit__()方法即可

使用with语句访问上下文管理器

with 上下文管理器表达式 [ as 变量]:

    语句块


  
  1. #上下文管理器
  2. class File():
  3. def __init__(self,filename,mode):
  4. self.filename=filename
  5. self.mode=mode
  6. #在with语句块执行前,首先会执行enter()方法
  7. def __enter__(self):
  8. print( "执行__enter__function.")
  9. self.f = open(self.filename,self.mode)
  10. return self.f
  11. #当with语句块执行结束,无论是否出现异常,都会调用__exit__()方法
  12. #通常将清除、释放资源的操作写在__exit__()方法中
  13. def __exit__(self,*args):
  14. print( "执行s__exit__function.")
  15. self.f.close()
  16. with File( r'D:\code1\pythontest\mypython.txt', 'r') as f:
  17. print(f.read())


转载:https://blog.csdn.net/qq_39397927/article/details/115871783
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场