关闭。这个问题需要更多focused .它目前不接受答案。
想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .
7年前关闭。
Improve this question
del
语句在删除属性等方面有许多实际用途(参见 When is del useful in python? 和其他),但它也可用于解除局部变量的绑定(bind):
def test():
x = ...
del x
是否有任何实际用例?
我想到了垃圾收集,但
x=None
应该有同样的效果。我也听说过“导入后清理”的原因,但是 from ... import ...
这样做更好。 “Cleaner code”也弹出来了,但是看不懂del
可以使代码更干净(至少对于无论如何都不需要重构的代码而言)。编辑:
这有点失控了。我期待一个答案,例如
“当然你需要
del x
!否则你不能做......否则,呃!”我认为现在可以说没有这样的答案。如果有用途,那么它们与编码风格相关并且“有争议”。
我试图通过直接反驳问题中最常见的讨论来避免“意见”讨论,显然这行不通......
我只是很好奇为什么 Python 具有此功能,并认为可能有一些最佳实践可供我学习。
由于其他人都有自己的意见,让我补充一下自己的意见:
我建议不要解除绑定(bind)局部变量。 经验不足的 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]
关于python - `del x` 在 Python 中有用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26416419/