猿问

python垃圾收集器和列表

在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或进行任何其他排列。


慕运维8079593
浏览 183回答 2
2回答

Smart猫小萌

Python主要依靠引用计数来管理对象的寿命。(我认为它使用某种标记扫掠方式来处理参考周期,但请不要在此引用我的意思。)我猜想,当列表被销毁时,它们会以相反的顺序引用它们的元素,因此您会看到这种行为。我认为列表元素的销毁顺序不是正式定义的,在这种情况下,这并不是“问题”。
随时随地看视频慕课网APP

相关分类

Python
我要回答