with open(__file__, 'r') as f:
,而不是使用真正的性能優勢:
open(__file__,'r')
在Python 3
兩個寫入和讀取文件?
with open(__file__, 'r') as f:
,而不是使用真正的性能優勢:
open(__file__,'r')
在Python 3
兩個寫入和讀取文件?
with語句的基本功能是利用對象上的兩個新魔術關鍵字:__enter__
和__exit__
來實現自動清理(C++析構函數,.net IDisposable等)。所以真正發生的事如下:
file = open(__file__, 'r')
try:
# your code here
finally: file.close()
隨時閱讀多一點實際執行中pep-0343
使用with
表示該文件將在您離開該塊後立即關閉。這是有益的,因爲關閉文件是一件容易被人遺忘的事情,並且不再需要資源。
請注意,這不是特定於Python 3的。 – 2011-05-05 18:30:43
@jleedev:正確,在Python3之前存在'with'。 – unholysampler 2011-05-05 18:40:55
'with'是在Python 2.6中引入的,但早在Python 2.5中就可以作爲'__future__'特性(例如'from __future__ import with_statement')提供。 – jathanism 2011-05-05 18:56:49
使用古典語法必須注意關閉文件,因此即使在文件處理過程中發生了異常。
恕我直言另一方面,與with
聲明,你可以編寫更小的代碼,更易於閱讀,python正在照顧你離開with
塊後關閉文件。
要回答你的什麼性能優勢的問題,有沒有從嚴格的CPU /內存立場。你的代碼不會有更好的表現,但是在打字的時候它會更強大,並且應該更清晰,因此更容易維護。因此,從某種意義上說,性能增益將以後期維護中的工時爲單位進行衡量,因爲我們都應該知道軟件的真實成本,所以它將具有很好的「性能優勢」。 ;)
您不應該對公共變量使用'__name__'樣式標識符。這些名字意在具有特殊的「魔術」含義。 – ulidtko 2011-05-05 18:28:42
@ulidtko這就是它在這裏使用的模塊正在打開。 – 2011-05-05 18:30:12
閱讀此:http://effbot.org/zone/python-with-statement.htm – fardjad 2011-05-05 18:31:49