不要等待垃圾收集清理
垃圾收集将清理的事实并不意味着你应该等待垃圾收集周期进行清理。
特别是,你不应该等待垃圾收集来关闭文件句柄,数据库连接和打开网络连接。
例如:
在下面的代码中,假设文件将在下一个垃圾回收周期关闭,如果 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
块中引发异常,它也总是关闭文件。