Python 知识量:10 - 41 - 150
finally代码块用于在try/except块中进行清理操作。最重要的一点是:finally块总是会执行,要么与try块一起执行;要么与except块一起执行。finally经常用于必须执行的代码部分。
# exception.py def to_int(string,base): try: print(int(string,base)) except: print('Error occurred!') finally: print('Finally executed.')
运行结果为:
>>> ==================== RESTART: D:/PythonTestFile/exception.py =================== >>> to_int('1000',2) 8 Finally executed. >>> to_int('s',2) Error occurred! Finally executed. >>> to_int(1000,2) Error occurred! Finally executed.
上节示例中,finally块的执行顺序位于try或except块之后,但情况并不总是这样。try和except块中使用的都是函数print()。但如果使用的是return语句,程序的执行顺序就会发生变化。具体情况是:
try或except块中如果遇到return语句,程序会锁定return的值,然后跳转到finally块中。
执行finally块中的程序。
如果finally块中没有return语句,则finally块执行完毕之后仍返回原return部分,将之前锁定的值返回。
如果finally块中有return语句,则执行finally块中的return语句,整个程序执行结束。原try或except块中的程序(return语句)不再执行。
示例如下:
# exception.py def to_int(string,base): try: return int(string,base) except: return'Error occurred!' finally: print('Finally executed.')
运行结果为:
>>> ==================== RESTART: D:/PythonTestFile/exception.py =================== >>> to_int('1000',2) Finally executed. 8 >>> to_int('s',2) Finally executed. 'Error occurred!' >>> to_int(1000,2) Finally executed. 'Error occurred!'
with语句用于尽早执行清理操作的地方,即使发生了异常也是如此。例如及时关闭一个打开的文件,即在文件不再需要时,立刻关闭。其示例代码如下:
# exception.py def closeit(): num=1 with open('English.txt','r') as f: for line in f: print('%02d %s' % (num,line),end='') num=num+1
运行结果为:
>>> ==================== RESTART: D:\PythonTestFile\exception.py =================== >>> closeit() 01 Cambridge Primary English Stage 1 Learner's Book 02 Cambridge Primary English Stage 1 Activity Book 03 Cambridge Primary English Stage 2 Learner's Book 04 Cambridge Primary English Stage 2 Activity Book 05 Cambridge Primary English Stage 3 Learner's Book 06 Cambridge Primary English Stage 3 Activity Book
以上代码中,当for循环结束之时,文件English.txt将被立即关闭。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6