python之with關鍵字

2021-09-25 02:48:25 字數 1927 閱讀 2985

with表示式其實是try-finally的簡寫形式。但是又不是全相同。

"""

格式with context [as var]:

pass

"""

其中的context是乙個表示式,返回的是乙個物件,var用來儲存context表示式返回的物件,可以有單個或者多個返回值。

但是with本身並沒有異常捕獲的功能,但是如果發生了執行時異常,它照樣可以關閉檔案釋放資源。

這個例子可以看出with沒有捕獲異常的功能。

這個例子可以看出with發生了異常也會關閉程式。

with 語句實質是上下文管理。

1、上下文管理協議。包含方法__enter__() 和 __exit__(),支援該協議物件要實現這兩個方法。

2、上下文管理器,定義執行with語句時要建立的執行時上下文,負責執行with語句塊上下文中的進入與退出操作。

3、進入上下文的時候執行__enter__方法,如果設定as var語句,var變數接受__enter__()方法返回值。

4、如果執行時發生了異常,就退出上下文管理器。呼叫管理器__exit__方法。

"""自定義類必須包含上述幾個方法才能正確使用with關鍵字。

class mycontex(object):

def __init__(self,name):

self.name=name

def __enter__(self):

print("進入enter")

return self

def do_self(self):

print(self.name)

def __exit__(self,exc_type,exc_value,traceback):

print("退出exit")

下面我們故意加乙個nameerror

即使程式發生了錯誤,python直譯器終止了我們的程式,但是我們的類 還是順利關閉了。

1、檔案操作。2、程序執行緒之間互斥物件。3、支援上下文其他物件

python關鍵字之 property

學習 python 的時候,經常遇見 property 關鍵字,有時候讓我有點疑惑,所以寫下這篇部落格來記錄它。在繫結屬性時,如果我們直接把屬性暴露出去,雖然寫起來很簡單,但是,沒辦法檢查引數,導致可以隨便更改屬性 舉個例子 class celsius def init self,temperatu...

new關鍵字 this關鍵字 base關鍵字

使用new,所做的三件事 1.類是引用物件,引用物件是在堆中開闢空間 在堆中開闢空間 2.在開闢的堆空間中建立物件 3.呼叫物件的構建函式 4.隱藏父類成員 子類的成員可以與隱藏從父類繼承的成員,類似於重寫。public new void sayhello this關鍵字的使用 1.代表當前類的物件...

python基礎之關鍵字 三

開發人員在程式中自定義的一些符號和名稱 標示符是自己定義的,如變數名 函式名等 起乙個有意義的名字,盡量做到看一眼就知道是什麼意思 提高 可 讀性 比如 名字 就定義為 name 定義學生 用 student 小駝峰式命名法 lower camel case 第乙個單詞以小寫字母開始 第二個單詞的首...