跳至主要內容

Python的小更新

LincZero大约 2 分钟

Python的小更新

目录

"with" Keyword By Python 2.5

https://blog.csdn.net/weixin_45738641/article/details/102836071

else和with是Python中两个重要的关键字

Else

1.if…else…(判断语句) 如果if语句中的条件不满足,则执行else中的语句

2.while\for…else…(循环语句) 如果while和for循环正常结束,则执行else中的语句 要特别注意的是,如果循环是通过break语句跳出来或者出现异常,那么else语句将不再进行

3.try…except…else…finally(捕捉异常)

关于try….except1…except2…else…finally的执行顺序:是try执行完没有任何问题(即各个except语句均没有捕获到异常)时,再去执行else语句,最后执行finally首尾工作,若执行过程中只要有except捕获到异常,就跳过else直接执行finally;

With

在 Python 2.5 中, with 关键字被加入。它将常用的 try … except … finally … 模式很方便的被复用。看一个最经典的例子:

with open('file.txt') as f:
    content = f.read()

在这段代码中,无论 with 中的代码块在执行的过程中发生任何情况,文件最终都会被关闭。如果代码块在执行的过程中发生了一个异常,那么在这个异常被抛出前,程序会先将被打开的文件关闭。

with 的一般执行过程:

with EXPR as VAR:
    BLOCK

其中: EXPR 可以是任意表达式; as VAR 是可选的。其一般的执行过程是这样的:

计算 EXPR ,并获取一个上下文管理器。 上下文管理器的 exit() 方法被保存起来用于之后的调用。 调用上下文管理器的 enter() 方法。 如果 with 表达式包含 as VAR ,那么 EXPR 的返回值被赋值给 VAR 。 执行 BLOCK 中的表达式。 调用上下文管理器的 exit() 方法。如果 BLOCK 的执行过程中发生了一个异常导致程序退出,那么异常的 type 、 value 和 traceback (即 sys.exc_info()的返回值 )将作为参数传递给 exit() 方法。否则,将传递三个 None 。