Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“del x”在Python中有用吗?_Python_Python 2.7 - Fatal编程技术网

“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
),而不是从聚合中删除,另一个问题充分涵盖了这一点。