gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 07:54:06 33 4
gpt4 key购买 nike

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

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

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

上面的代码行是否按照我的想法行事,即使是,这也是 Pythonic 的做法吗?

最佳答案

答案在您提供的链接中。

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

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

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

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

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

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