with
open
('filename'
,method='')
as file_object:
content = file_object.read(
)
特點
1. with語句開啟檔案,並指示了乙個語句塊(即接下來有乙個縮排的多行**區域),該語句塊內的**是對檔案的操作,當脫離該語句塊時(即沒有了縮排),則表示with語句塊結束,接下來的**不是對檔案的操作**。
2. 注意,當脫離with語句塊的時候,即表示結束了檔案的操作,這時python會自動呼叫 close() 關閉這個檔案,此後不能再引用這個檔案物件。
優點
1.使用簡單方便。
2.自動管理檔案物件,不必使用 close()
3.當遭遇程式bug時導致本來應有的 close() 未能執行,如果使用with,python保證即使出現故障,也能保證檔案被正確關閉。
with的工作機制
class
sample
:def
__enter__
(self)
:print
("in__enter__()"
)return
"foo"
def__exit__
(self,
type
, value, trace)
:print
("in __exit__()"
)with sample():
pass
執行結果:
in__enter__(
)in __exit__(
)[finished in
0.1s]
將with物件列印看看
class
sample
:def
__enter__
(self)
:print
("in__enter__()"
)return
"foo"
def__exit__
(self,
type
, value, trace)
:print
("in __exit__()"
)print
(sample())
with sample(
)as ob:
print
("ob:"
, ob)
執行結果:
<__main__.sample object at 0x000002727eb67198
>
in__enter__(
)ob: foo
in __exit__(
)[finished in
0.1s]
with的實現機制是:with物件應該具有乙個__enter__()
方法和乙個__exit__()
方法。
with語句將首先呼叫物件的__enter__()
方法,並將__enter__()
方法的返回值賦值給as後面的變數。當with後面的**塊全部被執行完之後,with將呼叫象的__exit__()
方法。
解釋下浮動和它的工作原理?清除浮動的技巧
浮動元素脫離文件流,不佔據空間。浮動元素碰到包含它的邊框或者浮動元素的邊框停留。浮動元素引起的問題和解決辦法?浮動元素引起的問題 父元素的高度無法被撐開,影響與父元素同級的元素 與浮動元素同級的非浮動元素 內聯元素 會跟隨其後 若非第乙個元素浮動,則該元素之前的元素也需要浮動,否則會影響頁面顯示的結...
解釋下浮動和它的工作原理?清除浮動的技巧
浮動元素脫離文件流,不佔據空間。浮動元素碰到包含它的邊框或者浮動元素的邊框停留。浮動元素引起的問題和解決辦法?浮動元素引起的問題 父元素的高度無法被撐開,影響與父元素同級的元素 與浮動元素同級的非浮動元素 內聯元素 會跟隨其後 若非第乙個元素浮動,則該元素之前的元素也需要浮動,否則會影響頁面顯示的結...
5 2 併發和它的管理
在現代 linux 系統,有非常多的並發源,並且因此而來的可能競爭情況.多個使用者空間程序在執行,它們可能以令人驚訝的方式組合訪問你的 smp 系統能夠同時在不同處理器上執行你的 核心 是可搶占的 你的驅動 可能在任何時間失去處理器,代替它的程序可能也在你的驅動中執行.裝置中斷是能夠導致你的 併發執...