1.什么是上下文管理
-
上下文管理器是一个包装任意代码块的对象,上下文管理器保证进入上下文管理器时,每次代码执行的一致性,当退出上下文管理器时,相关的资源会被正确的回收;
-
上下文管理器一定能够保证退出步骤的执行,不用再调用close()关闭文件;
2.如何实现上下文管理器
class Student:
def __init__(self): # 第一步:进入上下文之前会调用初始化方法
print('init')
self.name = '张三'
self.age = 27
def __enter__(self): # 第二步:进入上下文会调用这个方法,return返回的结果会通过as关键字赋值给后面的变量
print('enter')
return self
def __exit__(self, exc_type, exc_val, exc_tb):
print('exit') # 第四步:执行完毕语句块后,会调用__exit__方法退出上下文
with Student() as stu:
print(stu) # 第三步:调用了__enter__后,会执行上下文的语句块
-
实现上下文管理器有两种方式,一个是通过类实现
__enter__
和__exit__
方法,也就是通过with语句进行上下文管理;</