gpt4 book ai didi

python - 为什么你可以多次关闭()一个文件对象?

转载 作者:太空宇宙 更新时间:2023-11-04 08:46:56 24 4
gpt4 key购买 nike

这个问题纯粹是出于好奇。在最近的问题讨论中提出 here , 我经常想知道为什么上下文管理器 (with) 不会在人们通过误解显式关闭文件时抛出错误......然后我发现你可以调用 close( ) 在一个文件上多次使用,即使不使用 with 也没有错误。

我们唯一能找到的相关信息是 here它只是温和地说(强调我的):

close( )
Close the file. A closed file cannot be read or written any more. Any operation which requires that the file be open will raise a ValueError after the file has been closed. Calling close() more than once is allowed.

这似乎是有意设计的,但是,如果您不能无一异常(exception)地对关闭的文件执行任何操作,我们就无法弄清楚为什么允许多次关闭文件。有用例吗?

最佳答案

  1. with 的想法是错误的。这种行为一直存在于 Python 中永远,因此为了向后兼容而保留它是值得的。

  2. 因为引发异常没有任何意义。如果您的代码中存在实际错误,您可能会在使用完文件之前关闭文件,那么无论如何在使用 readwrite 操作时都会出现异常,并且因此,您永远不会到达对 close 的第二次调用。

  3. 允许这样做很少使代码更易于编写,避免添加大量if not the_file.isclosed(): the_file.close()

  4. BDFL 以这种方式设计文件对象,我们坚持这种行为,因为没有充分的理由改变它。

关于python - 为什么你可以多次关闭()一个文件对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39600786/

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