del 語句
Python 提供了 del 語句用於刪除不再使用的變量
語法
del 表達式
刪除變量的栗子
var = "hello" del var print(var) # 輸出結果 print(var) NameError: name 'var' is not defined
變量已經被刪除了,所以無法訪問變量
類的析構方法
- Python 提供了一種機制使得對象被刪除前能夠得到通知
- 對象被刪除時,如果該對象擁有名為 __del__ 的方法,該方法在刪除前被調用,該方法又被稱為析構方法
語法
class 類: def __del__(self): self.屬性
重點
- 析構方法是對象在被垃圾回收的時候起作用的一個方法
- 它的執行一般也就意味着對象不能夠繼續引用, 回收內存
- Python 建議不要在對象銷毀時做任何事情,因為對象銷毀的時間難以確定
- 所以析構方法一般無須定義,日常使用時無需關心內存的分配和釋放,因為此工作都是交給 Python 解釋器來執行
- 一句話:析構方法的調用是由解釋器在進行垃圾回收時自動觸發執行的
栗子一
當對象在某個作用域中調用完畢,在跳出其作用域的同時析構方法會自動被調用,這樣可以釋放內存空間
# 析構方法 class PoloBlog: # 構造方法 def __init__(self): print("自動調用構造方法") def __del__(self): print("自動調用析構方法,釋放內存") blog = PoloBlog() print("最后一句代碼") # 輸出結果 自動調用構造方法 最后一句代碼 自動調用析構方法,釋放內存
栗子二
主動 del 對象
# 析構方法 class PoloBlog: # 構造方法 def __init__(self): print("自動調用構造方法") def __del__(self): print("自動調用析構方法,釋放內存") blog = PoloBlog() # 主動刪除對象 del blog print("最后一句代碼") # 輸出結果 自動調用構造方法 自動調用析構方法,釋放內存 最后一句代碼
- 使用 del 語句,相當於主動調用對象的析構方法,會立即刪除對象,並回收內存
- 通常是刪除臨時的對象,對那些長期占用內存的臨時對象進行回收