gpt4 book ai didi

python - 当引用计数为零时文件对象是否会自动关闭?

转载 作者:IT老高 更新时间:2023-10-28 21:44:39 26 4
gpt4 key购买 nike

我的印象是文件对象在引用计数达到 0 时立即关闭,因此行:

foo = open('foo').read()

会得到文件的内容并立即关闭文件。但是,在阅读了 Is close() necessary when using iterator on a Python file object 的答案后我的印象是这不会发生,并且在文件对象上调用 .close()总是必要的。

上面这行代码是否符合我的想法?即使有,它是否符合 Python 风格?

最佳答案

答案在您提供的链接中。

垃圾收集器在销毁文件对象时会关闭文件,但是:

  • 你无法真正控制它何时发生。

    虽然 CPython 使用引用计数来确定性地释放资源(因此您可以预测对象何时会被销毁)其他版本不必这样做。例如,Jython 或 IronPython 都使用 JVM 和 .NET 垃圾收集器,它们仅在需要恢复内存时释放(并完成)对象并且在程序结束之前可能不会对某些对象执行此操作。甚至对于 CPython GC 算法将来也可能会随着引用计数而改变效率不高。

  • 如果在文件对象销毁时关闭文件时抛出异常,你真的无能为力,因为你不知道。

关于python - 当引用计数为零时文件对象是否会自动关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1834556/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com