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 命令 。