python with關鍵字——I/O好伴侶

忘記開掛的程式猿發表於2020-09-24

學習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類似於函式物件,後續想要呼叫幾次就幾次,引數都是共享的。

今天就分享到這,希望大家進行檔案讀寫時養成使用with的好習慣!

參考:

相關文章