第十八節 上下文管理協議

2022-08-31 22:15:27 字數 1110 閱讀 4108

上下文管理協議:

with obj as f:

'**塊'

1.with obj ----》觸發obj.__enter__(),拿到返回值

2.as f----->f=返回值、

3.with obj as f 等同於 f=obj.__enter__()

4.執行**塊

一:沒有異常的情況下,整個**塊執行完畢後去觸發__exit__,它的三個引數都為none

二:有異常的情況下,從異常出現的位置直接觸發__exit__

a:如果__exit__的返回值為true,代表吞掉了異常,程式繼續執行

b:如果__exit__的返回值不為true,代表吐出了異常,__exit__的的執行完畢就代表了整個with語句的執行完畢

class

foo:

def__init__

(self,name):

self.name=name

def__enter__

(self):

print('

執行enter')

return

self

def__exit__

(self, exc_type, exc_val, exc_tb):

print('

執行exit')

print

(exc_type)  #異常型別

print

(exc_val)   #異常值

print

(exc_tb)   #追蹤資訊

return

true

with foo(

'a.txt

') as f:

print

(f)

print(asd) #

觸發__exit__,如果返回true,**塊執行完畢,程式繼續執行

print

(f.name)

print('

-----------------')

print('

0000

')

使用場景:定製釋放資源機制,網路連線和鎖的程式設計環境

第十八節 動態協議 OSPF

第十八節 動態協議 ospf b ospf的資料封裝格式 d ospf和rip比較 e 鏈路狀態演算法的路由計算過程 f ospf的報文格式 g 鄰居和鄰接的關係 h ospf的網路型別 a 基本配置 假設 我又開兩台路由器 1 開啟ospf程序 ospf就行 預設為1 後面可以指定程序號,例如 o...

第十八節 快取

本節將通過對 2019 11 05 mynopcommerce vs19core2.2nop4.20 不刪,014 新增一些中介軟體的定義 程式進行重構,從而來實現授權功能。重構nop.web.framework.infrastructure.dependencyregistrar 類,重新定義 r...

上下文管理協議

class open def init self,name self.name name def enter self print 執行enter def exit self,exc type,exc val,exc tb print 執行exit with open a.txt as f with...