|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1 和if 搭配:要么怎样,要么不怎样
2 和while和for循环搭配,else只在循环顺利完成后执行,也就是说当循环中间执行break跳出循环后else语句将不被执行。else和try except语句配合使用在不出现错误时才会执行else后面的语句。
def showmaxfactor(num):
count=num//2
while count>1:
if num%count ==0:
print('%d最大的约数是%d'%(num,count))
break
count-=1
else:
print('%d是素数'%num)
num=int(input('请输入一个数:'))
showmaxfactor(num)
try:
int('123')
except ValueError as reason:
print('出错'+ str(reason))
else:
print('no error')
3简洁的with语句:
使用with语句可以在使用完文件后自动帮你关闭
try:
f=open('data.txt','w')
for each_line in f:
print(each_line)
except OSError as reason:
print('出错了:' + str(reason))
finally:
f.close()
这里finally试图关闭一个并不存在的文件,会出错。
使用with可以帮助我们,在文件被打开后关闭文件。
try:
with open('data.txt','w') as f:
for each_line in f:
print(each_line)
except OSError as reason:
print('出错了:' + str(reason))
with语句原理
with 语句会自动处理文件的打开和关闭,如果中途出现异常,会执行清理代码,然后确保文件自动关闭。
实际上,在with后面的代码块抛出任何异常时,__exit__() 方法被执行。正如例子所示,异常抛出时,与之关联的type,value和stack trace传给 __exit__() 方法,因此抛出的ZeroDivisionError异常被打印出来了。开发库时,清理资源,关闭文件等等操作,都可以放在 __exit__ 方法当中。
另外,__exit__ 除了用于tear things down,还可以进行异常的监控和处理,注意后几个参数。要跳过一个异常,只需要返回该函数True即可。
下面的样例代码跳过了所有的TypeError,而让其他异常正常抛出。
def __exit__(self, type, value, traceback):
return isinstance(value, TypeError)
总之,with-as表达式极大的简化了每次写finally的工作,这对保持代码的优雅性是有极大帮助的。
如果有多个项,我们可以这么写:
with open("x.txt") as f1, open('xxx.txt') as f2:
do something with f1,f2
因此,Python的with语句是提供一个有效的机制,让代码更简练,同时在异常产生时,清理工作更简单。
|
评分
-
查看全部评分
|