假设你有:
def my_func():
fh = open(...)
try:
print fh.read()
finally:
fh.close()
我的第一个问题是:使用 try/finally(或 with)语句是否值得?当函数终止时(通过垃圾收集),文件是否仍然关闭?
在阅读了 Martelli 的“python 食谱”中的食谱后,我发现了这一点
all_the_text = open('thefile.txt').read()
附带评论:“当你这样做时,一旦读取操作完成,你就不再拥有对文件对象的引用。实际上,Python 会立即注意到缺少引用,并立即关闭文件。”
我的函数示例几乎相同。您确实有参考,只是参考的寿命很短。
我的第二个问题是:马尔泰利声明中的“立即”是什么意思?即使您根本没有参考,文件关闭也不会在垃圾收集时发生吗?