在python 2.7中有关于垃圾收集的问题。为什么这样的代码class A: def __init__(self, name): self.name = name def __del__(self): print self.name,aa = [A(str(i)) for i in range(10)]del aa给出输出9 8 7 6 5 4 3 2 1 0,而不给出0 1 2 3 4 5 6 7 8 9或进行任何其他排列。
2 回答
Smart猫小萌
TA贡献1911条经验 获得超7个赞
Python主要依靠引用计数来管理对象的寿命。(我认为它使用某种标记扫掠方式来处理参考周期,但请不要在此引用我的意思。)
我猜想,当列表被销毁时,它们会以相反的顺序引用它们的元素,因此您会看到这种行为。
我认为列表元素的销毁顺序不是正式定义的,在这种情况下,这并不是“问题”。
添加回答
举报
0/150
提交
取消