在Python中何时使用del?

469 投票
22 回答
397161 浏览
提问于 2025-04-16 18:26

我实在想不出为什么Python需要del这个关键词(而且大多数编程语言似乎没有类似的关键词)。比如说,删除一个变量时,可以直接把它的值设为None。而在从字典中删除内容时,也可以添加一个del的方法。

那么,保留del在Python中有什么理由吗?还是说它只是Python在引入垃圾回收机制之前的遗留产物?

22 个回答

53

我发现 del 这个命令在清理 for 循环中多余的变量时特别有用:

for x in some_list:
  do(x)
del x

这样你就可以确保,如果在 for 循环外使用 x,它是未定义的,也就是说它不会有任何值。

199

在Python中,del这个命令有一个功能,来自于Python语言参考

删除一个名字会把这个名字从本地或全局的命名空间中移除。

而把None赋值给一个名字,并不会把这个名字从命名空间中移除。

(我想关于删除名字的绑定是否真的有用,可能会有一些争论,但那是另一个话题。)

604

首先,你可以删除其他东西,不仅仅是局部变量。

del list_item[4]
del dictionary["alpha"]

这两者都应该是很有用的。其次,使用 del 删除一个局部变量可以让你的意图更加明确。对比一下:

del foo

foo = None

del foo 的情况下,我知道它的意图是把这个变量从作用域中移除。而 foo = None 并不明显是在做这个。如果有人只是把 foo = None 赋值,我可能会认为这段代码是没用的。但是我立刻就能明白写 del foo 的人想要做什么。

撰写回答