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

with语句

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

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

1.

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

2.

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

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

3.

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

上下文管理器

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

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

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

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

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

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

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

    语句块

#上下文管理器
class File():
    def __init__(self,filename,mode):
        self.filename=filename
        self.mode=mode
    #在with语句块执行前,首先会执行enter()方法
    def __enter__(self):
        print("执行__enter__function.")
        self.f = open(self.filename,self.mode)
        return self.f
    #当with语句块执行结束,无论是否出现异常,都会调用__exit__()方法
    #通常将清除、释放资源的操作写在__exit__()方法中
    def __exit__(self,*args):
        print("执行s__exit__function.")
        self.f.close()

with File(r'D:\code1\pythontest\mypython.txt','r') as f:
    print(f.read())

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

你可能感兴趣的:(python,python)