我倾向于在编写原型(prototype)脚本时使用它,并且:使用一些通用的变量(例如fileCount),并且拥有一个大型方法(20多行),并且暂时不要使用类或命名空间。在这种情况下,为了避免潜在的变量冲突,我一完成就删除了这个bugger。我知道,在生产代码中我应该避免使用1.、2.和3.,但是从可以工作的原型(prototype)到完全完善的类是耗时的。有时我可能想满足于一个次优的、快速的重构工作。在这种情况下,我发现将del语句放在手边。我是否正在养成一种不必要的坏习惯?del完全可以避免吗?什么时候会是好事? 最佳答案 我不
有人能解释一下为什么下面的代码会这样吗:importtypesclassDummy():def__init__(self,name):self.name=namedef__del__(self):print"delete",self.named1=Dummy("d1")deld1d1=Noneprint"afterd1"d2=Dummy("d2")deffunc(self):print"funccalled"d2.func=types.MethodType(func,d2)d2.func()deld2d2=Noneprint"afterd2"d3=Dummy("d3")deffunc(
这个问题在这里已经有了答案:Differentwaysofdeletinglists(6个回答)关闭7年前。请问清空列表最有效的方法是什么?我有一个名为a=[1,2,3]的列表。要删除列表的内容,我通常会写a=[]。我在python中遇到了一个名为del的函数。我想知道dela[:]和我使用的有什么区别。 最佳答案 有一个区别,它与该列表是否被多个地点/名称引用有关。>>>a=[1,2,3]>>>b=a>>>dela[:]>>>print(b)[]>>>a=[1,2,3]>>>b=a>>>a=[]>>>print(b)[1,2,3]
我看到一个类,其中一个__del__method被定义为。此方法用于销毁类的实例。但是,我找不到使用这种方法的地方。这种方法是如何使用的?像这样:obj1.del()?.如何调用__del__方法? 最佳答案 __del__是一个终结器。当一个对象被垃圾收集时调用它,这发生在对该对象的所有引用都被删除之后的某个时刻。在简单的情况下,这可能是在你说delx之后。或者,如果x是一个局部变量,在函数结束后。特别是,除非存在循环引用,否则CPython(标准Python实现)将立即进行垃圾收集。不过,这是CPython的实现细节。Pytho
这可能很愚蠢,但它已经在我的大脑后部唠叨了一段时间。Python为我们提供了两种从对象中删除属性的内置方法,del命令字和delattr内置函数。我更喜欢delattr因为我认为它更明确:delfoo.bardelattr(foo,"bar")但我想知道它们之间是否存在内在差异。 最佳答案 第一个比第二个更有效。delfoo.bar编译成两条字节码指令:20LOAD_FAST0(foo)3DELETE_ATTR0(bar)而delattr(foo,"bar")需要五个:20LOAD_GLOBAL0(delattr)3LOAD_FAS
我真的想不出Python需要del关键字的任何原因(而且大多数语言似乎没有类似的关键字)。例如,与其删除变量,不如将None分配给它。并且在从字典中删除时,可以添加一个del方法。是否有理由将del保留在Python中,或者它是Python垃圾回收前的遗迹? 最佳答案 首先,你可以del除了局部变量之外的其他东西dellist_item[4]deldictionary["alpha"]两者都应该明显有用。其次,在局部变量上使用del会使意图更清晰。比较:delfoo到foo=None我知道delfoo的目的是从范围中删除变量。目前尚
我真的想不出Python需要del关键字的任何原因(而且大多数语言似乎没有类似的关键字)。例如,与其删除变量,不如将None分配给它。并且在从字典中删除时,可以添加一个del方法。是否有理由将del保留在Python中,或者它是Python垃圾回收前的遗迹? 最佳答案 首先,你可以del除了局部变量之外的其他东西dellist_item[4]deldictionary["alpha"]两者都应该明显有用。其次,在局部变量上使用del会使意图更清晰。比较:delfoo到foo=None我知道delfoo的目的是从范围中删除变量。目前尚
快速理解del和clear的区别dict0={'key1':1,'key2':2}deldict0['key1'],表示删除键为key1的键值对;deldict0表示删除整个字典,删除后字典不存在;dict1.clear(),清空字典,删除后字典仍存在。选择题以下python代码输出什么?dict1={'A':1,'B':2,'C':3}deldict1['A']print(dict1)dict1.clear()print(dict1)deldict1print(dict1)A{'B':2,'C':3}{}报错B{1,'B':2,'C':3}{}报错C{'B':2,'C':3}报错报错D{'B
快速理解del和clear的区别dict0={'key1':1,'key2':2}deldict0['key1'],表示删除键为key1的键值对;deldict0表示删除整个字典,删除后字典不存在;dict1.clear(),清空字典,删除后字典仍存在。选择题以下python代码输出什么?dict1={'A':1,'B':2,'C':3}deldict1['A']print(dict1)dict1.clear()print(dict1)deldict1print(dict1)A{'B':2,'C':3}{}报错B{1,'B':2,'C':3}{}报错C{'B':2,'C':3}报错报错D{'B