该del语句有许多实际用途来删除属性等(参见什么时候在python中有用?等等),但它也可以用来取消绑定局部变量:
def test():
x = ...
del x
Run Code Online (Sandbox Code Playgroud)
这有什么实际用例吗?
想到垃圾收集,但x=None应该具有相同的效果.我也听说"导入后清理"是一个原因,但from ... import ...做得更好."更清洁的代码"也出现了,但我不知道如何del使代码更清晰(至少对于不需要重构的代码而言).
编辑:
这有点失控.我期待一个像这样的答案
"当然你需要del x!你做不到......不然,不管怎样,呃!"
我想现在可以说没有这样的答案.如果有用途,那么它们的编码风格相关并且"有争议".
我试图通过在问题中直接反击最常见的问题来避免"意见"的讨论,显然这不起作用......
我只是好奇为什么Python有这个功能,并认为可能有一些最好的实践让我学习.
既然其他人都有他们的意见,那么让我自己加一点:
我建议不要解除局部变量的绑定.经验不足的Python程序员(特别是那些具有C++背景的程序员)很可能会被解读del x为delete the object referenced by x.他们经常把它del x当作捷径x.__del__().许多人__del__经常使用它们.我多次看到这种误解.它最糟糕的是它最初适用于它们!使用简单的代码,对象只从该变量引用,CPython的行为就像他们认为的那样.因此,初学者会对他们的误解得到积极的强化,并开始越来越频繁地使用它,最终导致大量的错误代码和他们不理解的怪异行为.
我认为您在问题中驳回的案例是一个有效的地方,从语义上讲,使用del.
还有一些地方是del不能简单替换的。例如。
删除列表中每隔一个的元素
>>> a = range(10)
>>> del a[::2]
>>> a
[1, 3, 5, 7, 9]
Run Code Online (Sandbox Code Playgroud)