“del x”在Python中有用吗?
“del x”在Python中有用吗?,python,python-2.7,Python,Python 2.7,del语句在删除属性等方面有很多实际用途(请参见和其他),但也可以用于解除局部变量的绑定: def test(): x = ... del x 这有什么实际的用例吗 我想到了垃圾收集,但是x=None应该具有相同的效果。我也听说过“导入后清理”是一个原因,但是来自。。。导入…做得更好。“更干净的代码”也出现了,但我不知道del如何使代码更干净(至少对于那些根本不需要重构的代码) 编辑: 这有点失控了。我希望得到这样的回答 “当然,你需要删除x”!否则你无法正确地完成…duh!
del
语句在删除属性等方面有很多实际用途(请参见和其他),但也可以用于解除局部变量的绑定:
def test():
x = ...
del x
这有什么实际的用例吗
我想到了垃圾收集,但是x=None
应该具有相同的效果。我也听说过“导入后清理”是一个原因,但是来自。。。导入…
做得更好。“更干净的代码”也出现了,但我不知道del
如何使代码更干净(至少对于那些根本不需要重构的代码)
编辑:
这有点失控了。我希望得到这样的回答
“当然,你需要删除x”!否则你无法正确地完成…duh!”
我认为现在可以公平地说,没有这样的答案。如果有使用,那么它们是与编码风格相关且“有争议的”
我试图通过直接反驳问题中最常见的观点来避免“观点”讨论,显然这是行不通的
我只是好奇Python为什么有这个特性,并认为可能有一些最好的实践供我学习
既然其他人都同意他们的观点,让我补充我自己的观点:
<强>我建议不要束缚局部变量。< /强>经验不足的Python程序员(尤其是C++背景的程序员)可能会误解<代码> DEXX/COD> > <代码>删除X/COD>引用的对象。他们经常把
delx
当作x的捷径。许多人太频繁地使用\uu del\uu
。这种误解我已经见过很多次了。让它如此糟糕的是,它最初对他们有效!对于简单的代码,对象仅从该变量引用,CPython的行为就像他们认为的那样。因此,初学者会积极强化他们的误解,并开始越来越频繁地使用它,最终会产生大量他们不理解的错误代码和奇怪的行为。我认为你在问题中忽略的情况是一个有效的地方,在语义上使用del
更有意义
还有一些地方不能简单地替换del
。例如
删除列表中的每一个元素
>>> a = range(10)
>>> del a[::2]
>>> a
[1, 3, 5, 7, 9]
如果答案是否定的,那么就不是“说出一个真实的用例”,这是针对特定的编程问题和问题,而不是“发布尽可能多的答案”。@Mephy这是一个非常广泛的问题,也是基于观点的问题,是一个“好奇的”维基类型的问题,不能解决任何实际问题。。除非OP正在设计一种新的编程语言,否则我觉得这不是一个基于实际问题的实际问题。实际上,你在问题中给出的链接中有一个答案。del x
的意图是明确的,而x=None
的意图则不明确。对于x=None
,我不知道这只是为了垃圾收集,还是以后代码实际上要求x
为None
。这个问题特别要求使用删除变量(del x
),而不是从聚合中删除,另一个问题充分涵盖了这一点。