每当我处理原型脚本时,我倾向于使用它,并且:
fileCount
)和在这种情况下,为了避免潜在的变量冲突,我会在完成后立即删除bugger。我知道,在生产代码中我应该避免使用1.,2。和3.,但是从原型工作到完全抛光的类是非常耗时的。有时我可能想要解决一个次优,快速的重构工作。在这种情况下,我发现保持del
语句很方便。我是否养成了不必要的坏习惯? del
完全可以避免吗?什么时候会是一件好事?
答案 0 :(得分:23)
我不认为del
本身就是代码气味。
在同一名称空间中重用变量名称肯定是代码味道,因为在适当的情况下不使用类和其他名称空间。所以使用del
来促进那种事情就是代码味道。
我能想到的唯一合适的del
用法是打破循环引用,这通常也是代码味道(通常情况下,这甚至不是必需的)。请记住,所有del
都会删除对象的引用而不是对象本身。这将通过引用计数或垃圾收集来处理。
>>> a = [1, 2]
>>> b = a
>>> del a
>>> a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
>>> b
[1, 2]
您可以看到del
语句后列表保持活动状态,因为b
仍然保留对它的引用。
所以,虽然del
并不是真正的代码气味,但它可以与之相关联。
答案 1 :(得分:7)
除非在特殊情况下,任何在函数,类和方法中组织良好的代码都不需要del
。旨在通过使用更多功能和方法从一开始就构建您的应用程序,避免重用变量名称等。
使用del
语句是可以的 - 它不会带来任何麻烦,当我使用Python作为我系统上的shell脚本的替代品时,我经常使用它,当我正在编写脚本时实验。但是,如果它经常出现在真实的应用程序或库中,则表明某些东西不是很好,可能是结构严重的代码。我从来没有在应用程序中使用它,并且很少看到它在已发布的代码上的任何地方使用过。