在Python 3中使用with打开文件有什么优点?

10 投票
4 回答
5266 浏览
提问于 2025-04-16 17:04

使用

with open(__file__, 'r') as f:

相比于使用:

open(__file__,'r')

在Python 3中进行文件的读写,实际的性能优势是什么呢?

4 个回答

2

关于你问的性能优势,从严格的CPU和内存的角度来看,其实没有什么优势。你的代码在运行速度上不会更快,但它会更稳健,输入的内容会更少,而且更容易理解,这样后续维护起来也会更简单。所以从某种意义上说,性能的提升体现在以后维护所节省的人力时间上,而这才是软件的真正成本,因此它会有很大的“性能优势”。 ;)

12

使用 with 的好处是,当你离开这个代码块时,文件会自动关闭。这非常有用,因为关闭文件这件事很容易被忘记,而打开的文件会占用你不再需要的资源。

9

“with”语句的主要作用是利用对象上的两个特殊关键词:__enter____exit__,来实现自动清理(类似于C++中的析构函数,.NET中的IDisposable等)。简单来说,它的工作流程如下:

file = open(__file__, 'r')
try:
  # your code here
finally: file.close()

如果你想了解更多关于实际实现的内容,可以去看看 pep-0343

撰写回答