python with语句原理_Python异常高级处理,with语句原理,调用时机,环境管理器实现原理...

异常(高级)

回顾异常相关的语句:

try-except用来捕获异常通知

try-finally 用来做一定要做的事情

raise用来发出异常通知

assert 用来根据条件来发出AssertionError类型的异常通知

with 语句:

语法:

with 表达式1 [as 变量1],表达式2 [as 变量2]:

语句块

作用:

使用对于资源进行访问的场合,确保使用过程中不管是否发生异常,都会执行必须的'清理'操作,并释放资源

如:文件使用后自动关闭,线程中锁的自动获取和释放等

之前操作文件步骤:

try:

f = open('123.txt')

try:

print('正在读取文件')

n = int(f.read())

print('n= ',n)

finally:

f.close()

print('文件已经关闭')

except OSError:

print('文件打开失败')

用 with 语句操作文件:

try:

with open('123.txt') as f:

print('正在读取文件')

n = int(f.read())

print('n= ',n)

print('文件已经关闭') #只要离开with语句,都会关闭文件

except OSError:

print('文件打开失败')

说明:能够用于with语句进行管理的对象必须是环境管理器

环境管理器:

1.类内有__enter__和__exit__实例方法的类被称为环境管理器

2.能够用with语句管理的对象必须是环境管理器

3.__enter__方法将在进入with语句时被调用,并返回由 as 变量管理的对象

4.__exit__将在离开with语句时被调用,且可以用参数来判断在离开with语句时是否有异常发生并做出相应的处理

如:

class A:

def __enter__(self):

print('已进入with语句')

return self #返回的对象将由 as 绑定

def __exit__(self, exc_type, exc_val, exc_tb):

'此方法会在退出with语句时自动调用

exc_type 在没有异常时为None,在出现异常时为异常类型

exc_val  在没有异常时为None,在出现异常时绑定错误对象

exc_tb   在没有异常时为None,在出现异常时绑定traceback对象

'

print('已离开with语句')

with A() as a:

print('这是with语句内的一条语句')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值