try...finally... 結構
我們在執行一長串關聯命令時,會有一個問題,如果當中一個命令失敗了,整個命令串事實上就沒有必要執行下去了。在異常發生時,我們也需要執行一些收場工作。比如 close() 方法關閉文件。這時 try...finally... 結構就可以派上用場了。
try: f = open('a.txt', 'w') f.write('Hello!') finally: f.close()
這種結構簡單的說:無論異常是否發生,在程序結束前,finally中的語句都會被執行。
with 語句
try...finally... 雖然好用,但是代碼段有點長。因此python2.5以后引入 with 語句。
with 語句適用於對資源進行訪問的場合,確保不管使用過程中是否發生異常都會執行必要的“清理”操作,釋放資源,比如文件使用后自動關閉、線程中鎖的自動獲取和釋放等。
with open('a.txt', 'w') as f: f.write('Hello!')
和上面 try...finally... 實現一樣的功能。但是代碼精簡很多。