为了账号安全,请及时绑定邮箱和手机立即绑定

python垃圾收集器和列表

python垃圾收集器和列表

慕运维8079593 2021-03-02 17:34:17
在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主要依靠引用计数来管理对象的寿命。(我认为它使用某种标记扫掠方式来处理参考周期,但请不要在此引用我的意思。)

我猜想,当列表被销毁时,它们会以相反的顺序引用它们的元素,因此您会看到这种行为。

我认为列表元素的销毁顺序不是正式定义的,在这种情况下,这并不是“问题”。


查看完整回答
反对 回复 2021-03-26
  • 2 回答
  • 0 关注
  • 178 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信