del 命令
此命令有幾個相關但不同的形式。
del v
如果 v
是變數,則命令 del v
將從其範圍中刪除變數。例如:
x = 5
print(x) # out: 5
del x
print(x) # NameError: name 'f' is not defined
請注意,
del
是一個繫結出現,這意味著除非另有明確說明(使用nonlocal
或global
),del v
將使v
成為當前範圍的本地。如果你打算在外部範圍內刪除v
,請在del v
語句的相同範圍內使用nonlocal v
或global v
。
在以下所有內容中,命令的用意是預設行為,但不是由語言強制執行。可能以使這一意圖無效的方式編寫類。
del v.name
此命令觸發對 v.__delattr__(name)
的呼叫。
目的是使屬性 name
不可用。例如:
class A:
pass
a = A()
a.x = 7
print(a.x) # out: 7
del a.x
print(a.x) # error: AttributeError: 'A' object has no attribute 'x'
del v[item]
此命令觸發對 v.__delitem__(item)
的呼叫。
目的是 item
不屬於物件 v
實現的對映。例如:
x = {'a': 1, 'b': 2}
del x['a']
print(x) # out: {'b': 2}
print(x['a']) # error: KeyError: 'a'
del v[a:b]
這實際上叫 v.__delslice__(a, b)
。
意圖類似於上面描述的意圖,但是使用切片 - 專案範圍而不是單個專案。例如:
x = [0, 1, 2, 3, 4]
del x[1:3]
print(x) # out: [0, 3, 4]
另請參閱垃圾收集#del 命令 。