with....as的用法【好多粉】

理解try-exception的用法
try-exception用于处理程序执行过程中的异常情况。(相信每次看见异常的时候都会心态爆炸),那么我们接下来就看一下具体用法:
比如:print(1/0)

这里报错,原因就是因为0作为了分母。
此时可以用try-exception来进行处理,简单介绍一下基本流程:

那么对上面的代码进行改写
try:
print(2/1)
print(1/0) #此时会出现报错
except:
print(“出现分母为0的错误”)

try-exception-else的执行流程大致如下:

简单举例:
try:
print(2/1)
# print(1/0)
except:
print(“出现分母为0的错误”)
else:
print(“no error”)

在这里插入图片描述
在这里因为没有出现报错的情况,所以不执行except,直接执行else中的内容。
try-except-else-finally的执行流程:
在这里插入图片描述
可以简单地举例:
try:
a = 1 / 2
print(a)
print(m) # 抛出NameError异常
b = 1 / 0
print(b)
c = 2 / 1
print©
except NameError:
print(“Ops!!”) # 捕获到异常
except ZeroDivisionError:
print(“Wrong math!!”)
except:
print(“Error”)
else:
print(“No error! yeah!”)
finally: # 是否异常都执行该代码块
print(“Successfully!”)

在这里插入图片描述
with…as的用法
其语句的基本结构:
with expression [as variable]: # variable是可以省略的
with-block #语句执行块
在这里要应用一个“上下文管理协议”,指with后面跟的expression。这个expression一般都是一个类的实体。这个类的实体里面要包含有对__enter__和__exit__函数的定义才行。
with…as语句的执行顺序:
首先执行expression中的__enter__函数,其返回值会赋值给variable
(注意:variable可以写不写)
随后执行with-block语句块的代码,无论能否执行成功,在执行完毕后,
会执行expression中__exit__函数
那么整个过程就与try-finally的过程很像,可以做如下理解
try:
enter
except:
with-block
finally:
exit

用一个例子来说说明具体的用法叭(程序没有错误的情况下)
class Test(object):
def enter(self): # 类中函数第一个参数始终是self,表示创建的实例本身
print(“现在在__enter__函数内部”)
return “ok”

def __exit__(self, exc_type, exc_val, exc_tb):
    print("现在在__exit__()内部")

def get_sample():
return Test()

with get_sample() as sample:
print(“sample:”, sample)

这个表示类本身

print(Test)

这表示创建了一个匿名实例对象

print(Test())

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值