在Python中,是使用`del`语句代码的味道?

Ham*_*jan 27 python del

每当我处理原型脚本时,我倾向于使用它,并且:

  1. 使用一些常见的变量(例如fileCount)和
  2. 有一个大方法(20多行),和
  3. 不要使用类或命名空间.

在这种情况下,为了避免潜在的变量冲突,我会在完成后立即删除bugger.我知道,在生产代码中我应该避免使用1.,2.和3.,但是从原型工作到完全抛光的类是非常耗时的.有时我可能想要解决一个次优,快速的重构工作.在那种情况下,我发现保持这些del陈述很方便.我是否养成了不必要的坏习惯?是del完全可以避免的?什么时候会好的?

aar*_*ing 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]
Run Code Online (Sandbox Code Playgroud)

您可以看到列表在del语句后保持活动状态,因为它b仍保留对它的引用.

因此,虽然del它不是真正的代码味道,但它可以与事物相关联.

  • 删除对象的引用_means_将其从命名空间中删除并递减引用计数器.也就是说,如果Python实现使用引用计数.如果没有,`del`表示前者而不表示后者. (14认同)

Ros*_*ron 7

del除非在特殊情况下,否则任何在函数,类和方法中组织良好的代码都不需要.旨在通过使用更多功能和方法从一开始就构建您的应用程序,避免重用变量名称等.

使用del语句是可以的 - 它不会导致任何麻烦,当我使用Python作为我系统上的shell脚本的替代品时,以及当我进行脚本实验时,我经常使用它.但是,如果它经常出现在真实的应用程序或库中,则表明某些东西不是很好,可能是结构严重的代码.我从来没有在应用程序中使用它,并且很少看到它在已发布的代码上的任何地方使用.

  • 从字典中删除内容仍然很有用。 (3认同)