學習python的朋友都知道檔案讀寫的基本操作,通常我們讀寫文字的姿勢是這個樣子的:
f = open(file_name)
...f.close()
每次定義乙個檔案讀寫物件,在操作完成後,我們都需要進行關閉操作,如果你一不小心忘記了,恭喜你中獎了?你的程式很可能發生記憶體洩露,然後記憶體溢位,然後就掛了。
這樣的事情發生的概率挺高的,我以前就總是這樣,因為開啟文字後,很可能一頓操作,**寫得很開心,自然忘記風險,忘記f.close …那麼怎麼避免類似的事情發生呢?這時候with就該出場了。
我們只需要:
with open(file_name) as f:
...
with作用的**塊執行結束後,會自動進行資源釋放,自動啊,媽媽再也不用擔心我的記憶體!!!
後來學了tensorflow 1.0 發現了with的妙用,上下文管理,簡單來說,利用
with tf.name_scope(name, reuse=...):
balaba
我們可以把with下的所有變數都定義到name命名空間下,然後呢?後續可以重複使用。幫助我們實現網路引數共享。不過到了tensorflow2.0 這個功能不美麗了,你只要定義網路layer類似於函式物件,後續想要呼叫幾次就幾次,引數都是共享的。
參考:
python with關鍵字學習
1.with語句時用於對try except finally 的優化,讓 更加美觀,例如常用的開發檔案的操作,用try except finally 實現 f open file name r try r f.read except pass finally f.close 開啟檔案的時候,為了能正...
python with關鍵字做了些啥?
python 上下文管理協議 我們時常會使用如下的 with open 1.txt as f print f.readlines 我們被告知這樣可以 安全 的開啟乙個檔案。因為當 執行超出 with 的作用域時檔案會自動關閉。那這是怎麼做到的呢。這就涉及到python上下文管理協議。乙個物件的實現使...
new關鍵字 this關鍵字 base關鍵字
使用new,所做的三件事 1.類是引用物件,引用物件是在堆中開闢空間 在堆中開闢空間 2.在開闢的堆空間中建立物件 3.呼叫物件的構建函式 4.隱藏父類成員 子類的成員可以與隱藏從父類繼承的成員,類似於重寫。public new void sayhello this關鍵字的使用 1.代表當前類的物件...