使用
的真正性能优势是什么?with open(__file__, 'r') as f:
而不是使用:
open(__file__,'r')
在Python 3写入和读取文件?
使用with
意味着文件将在您离开块时立即关闭。这是有益的,因为关闭文件很容易被忘记,并占用您不再需要的资源。
with语句所做的基本上是利用对象上的两个新的魔法关键字:__enter__
和__exit__
来实现自动清除(c++析构函数,.net IDisposable等)。因此,实际情况如下:
file = open(__file__, 'r')
try:
# your code here
finally: file.close()
请随意阅读pep-0343
要回答您关于什么性能优势的问题,从严格的CPU/内存角度来看没有。您的代码不会执行得更好,但它会更健壮,类型更少,并且应该更清晰,因此更容易维护。所以从某种意义上说,性能的提高将在以后的维护中以工时来衡量,这是我们都应该知道的软件的真正成本,所以它将具有很大的"性能优势"。div;)
使用经典语法,您必须负责关闭文件,因此即使在文件处理期间发生异常。
另一方面,使用with
语句,您可以编写更小的代码,更易于阅读,python在您离开with
块后负责关闭文件。