Python 簡易手冊

單元 32 - del 陳述

關鍵字 (keyword) del 用來刪除變數 (variable) 或識別字 (identifier) ,使之在目前的作用域 (scope) 不具效力,或是刪除可變 (mutable) 複合資料型態 (command data type) 的元素,讓直譯器 (intepreter) 可以進行資源回收,釋出記憶體空間,舉例如下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 定義互相連結的變數
a = 12
b = a
c = b

# 刪除變數 a 、 b
del a
del b

# 印出變數 c
print(c)

# 檔名: del_demo.py
# 說明: 《Python簡易手冊》的範例
# 網址: http://kaiching.org
# 作者: Kaiching Chang
# 時間: 2024 年 3 月

這個例子變數 abc 都被設定成整數 12 ,代表變數 abc 都指向整數 12 這個物件,第 7 行及第 8 行分別刪除變數 ab

 6
 7
 8
# 刪除變數 a 、 b
del a
del b

底下印出變數 c ,執行結果如下

> python del_demo.py
12
>

由於變數 abc 都是 12 ,但是只有刪除 ab ,所以變數 c 依然會是整數 12

利用內建函數 (built-in function) locals() ,我們可以查詢目前作用域的有效識別字,例如

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 定義函數
def do_something():
    a = 1
    print(locals())
    del a
    print(locals())

# 呼叫函數
do_something()

# 檔名: del_demo2.py
# 說明: 《Python簡易手冊》的範例
# 網址: http://kaiching.org
# 作者: Kaiching Chang
# 時間: 2024 年 3 月

這裡定義了函數 (function) do_something() ,然後在 do_somehting() 中建立區域變數 (local variable) a ,再印出 locals() ,接著用關鍵字 del 刪除 a ,再印出 locals()

 1
 2
 3
 4
 5
 6
# 定義函數
def do_something():
    a = 1
    print(locals())
    del a
    print(locals())

單元 44 - 函數與 return 陳述會介紹如何定義函數。

最底下呼叫 do_somehting() ,此例執行結果如下

> python del_demo2.py
{'a': 1}
{}
>

簡單說,當前作用域的識別字會以字典 (dictionary) 方式儲存, locals() 回傳這個字典,當刪除某個識別字,也就是從字典中刪除該 key

單元 41 - 字典會介紹詳細介紹字典的用法。

以下程式示範用關鍵字 del 刪除串列 (list) 的元素及刪除串列

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# 定義串列變數
a = [1, 2, 3]
# 印出變數 a
print(a)
# 刪除 a 的元素
del a[0]
# 印出變數 a
print(a)
# 刪除 a
del a
# 印出變數 a
print(a)

# 檔名: del_demo3.py
# 說明: 《Python簡易手冊》的範例
# 網址: http://kaiching.org
# 作者: Kaiching Chang
# 時間: 2024 年 3 月

第 6 行先刪除串列變數 a 的元素,然後在第 10 行刪除變數 a ,這樣最後印出變數 a 會導致出錯,此例執行結果如下

> python del_demo3.py
[1, 2, 3]
[2, 3]
Traceback (most recent call last):
  File "del_demo3.py", line 12, in <module>
    print(a)
          ^
NameError: name 'a' is not defined
>

單元 39 - 串列會介紹詳細介紹串列的用法。

參考資料

上一頁 單元 31 - type 陳述
回 Python 簡易手冊 首頁
下一頁 單元 33 - 字串
回 Python 教材首頁
回程式語言教材首頁