环境管理器
类内有__enter__ 和 __exit__实例方法的类被称为环境管理器 能够用with进行管理的对象必须是环境管理器说明:
__enter__将在进入with语句时被调用并返回由as变量绑定的对象 __exit__将在离开with语句时被调用,且可以用参数来判断在离开with语句时是否有异常发生并做出相应的处理class A: def __enter__(self): print("此方法是在with语句内执行的") def __exit__(self, exc_type, exc_val, exc_tb): '''exc_type 用来绑定错误类型,当没有异常发生是绑定None exc_val 用来绑定错误对象,当没有发生异常时绑定None exc_tb 用来绑定traceback对象,当没有异常时绑定None ''' if exc_type == None: print("你已离开with语句,离开时没有任何异常") else: print("你已离开with语句,发生异常") print("绑定错误对象是",exc_val)with A() as a: print("这是with语句内部的输出") print(int(input("请输入一个整数")))print("程序正常结束")输出结果:tarena@tedu:~/zengsf/828$ python3 exercise828.py 此方法是在with语句内执行的这是with语句内部的输出请输入一个整数f你已离开with语句,发生异常绑定错误对象是 invalid literal for int() with base 10: 'f'Traceback (most recent call last): File "exercise828.py", line 20, inprint(int(input("请输入一个整数")))ValueError: invalid literal for int() with base 10: 'f'