不要等待垃圾收集清理
垃圾收集將清理的事實並不意味著你應該等待垃圾收集週期進行清理。
特別是,你不應該等待垃圾收集來關閉檔案控制代碼,資料庫連線和開啟網路連線。
例如:
在下面的程式碼中,假設檔案將在下一個垃圾回收週期關閉,如果 f 是檔案的最後一個引用。
>>> f = open("test.txt")
>>> del f
更明確的清理方法是呼叫 f.close()
。你可以通過使用 with
語句(也稱為上下文管理器) 來實現更優雅 :
>>> with open("test.txt") as f:
... pass
... # do something with f
>>> #now the f object still exists, but it is closed
with
語句允許你在開啟的檔案下縮排程式碼。這使得顯式和更容易檢視檔案保持開啟的時間長度。即使在 while
塊中引發異常,它也總是關閉檔案。