python-else与with语句

mac2024-10-05  25

1.else语句

1、 if –else 2、while() —else 如果while语句因为break跳出,就不会执行else语句 只有当全部执行完成,才会执行else语句

def text (i): while (i<4): if(i==0): print('运行了,break') break else: print ('循环中,未break') i=5 else: print('else中的语句块') text(0) print('调用了函数\n') text(3) print('调用了函数\n') text(5) print('调用了函数\n') # 运行了,break 调用了函数 循环中,未break else中的语句块 调用了函数 else中的语句块 调用了函数

3、for()—-else 用法和while相同

4、try–except—else 与异常处理配合 else在没有任何异常出现的时候执行

try: <语句> #运行别的代码 except <名字>: <语句> #如果在try部份引发了'name'异常 else: <语句> #如果没有异常发生

2.with语句

将文件关闭的问题抽象化,不需关注细节,with 自动调用f.close(),关闭该文件 使用了 with 语句,不管在处理文件过程中是否发生异常,都能保证 with 语句执行完毕后已经关闭了打开的文件句柄。

try: with open(r'.\删除.txt','r+',encoding='UTF-8')as f: for eachline in f: print(eachline) except OsError as reason: print('出错了'+str(reason)) f=open('.\删除.txt','r+',encoding='UTF-8') try: for eachline in f: print(eachline) except OsError as reason: print('出错了'+str(reason)) finally: f.close()

常见的上下文管理器有

file decimal.Context thread.LockType threading.Lock threading.RLock threading.Condition threading.Semaphore threading.BoundedSemaphore

·当with遇到上下文管理器,就会在执行语句体之前,先执行上下文管理器的__enter__方法,然后再执行语句体,执行完语句体后,最后执行__exit__方法 ·无论with的语句体重是否报错都会执行__exit__方法;当我们在__exit__中给一个返回值为Ture时,就会忽略错误。 ·如果 exit 返回 False(默认不写返回值时,即为False),则会重新抛出异常,让with 之外的语句逻辑来处理异常,这也是通用做法;如果返回 True,则忽略异常,不再对异常进行处理。 ·with后面必须跟一个上下文管理器,如果使用了as,则是把上下文管理器的 enter() 方法的返回值赋值给 target,target 可以是单个变量,或者由“()”括起来的元组(不能是仅仅由“,”分隔的变量列表,必须加“()”) 参考文章(关于上下文管理器的知识讲解的比较清楚) 添加链接描述

最新回复(0)