...

The Del Statement

Dominic

Nov. 9, 2022

The del statement is used to delete things. It has a few distinct behaviors, depending on what is the specified target.
 
If a variable specified, it will be removed from the scope in which it is defined:
 
a = []
del a
a
# NameError: name 'a' is not defined
 
If the target has a form target[index], target.__delitem__(index) will be called. It is defined for built-in collections to remove items from them:
 
a = [1, 2, 3]
del a[0]
a # [2, 3]
 
d = {1: 2, 3: 4}
del d[3]
d # {1: 2}
 
Slices are also supported:
 
a = [1, 2, 3, 4]
del a[2:]
a # [1, 2]
 
And the last behavior, if target.attr is specified, target.__delattr__(attr) will be called. It is defined for object:
 
class A:
b = 'default'
a = A()
a.b = 'overwritten'
a.b # 'overwritten'
del a.b
a.b # 'default'
del a.b # AttributeError