变量垃圾是否被收集?
Is the variable garbage collected or not?
class X:
def __init__(self, d={}):
self.x = []
d['any'] = self.x
def append(self, i):
self.x.append(i)
x = X()
x.append(3)
x.append(13)
x.append(123213)
print(x.x) # show [3, 13, 123213]
问题是,d
会怎样?它是垃圾收集的吗?如果是,x
怎么还存在?
d
,您真正指的是用作该参数默认值的 dict
对象。有一个对此 dict
的 "hidden" 引用,阻止它被垃圾收集。
>>> print x.__init__.__defaults__
({'any': [3, 13, 123213]},)
class X:
def __init__(self, d={}):
self.x = []
d['any'] = self.x
def append(self, i):
self.x.append(i)
x = X()
x.append(3)
x.append(13)
x.append(123213)
print(x.x) # show [3, 13, 123213]
问题是,d
会怎样?它是垃圾收集的吗?如果是,x
怎么还存在?
d
,您真正指的是用作该参数默认值的 dict
对象。有一个对此 dict
的 "hidden" 引用,阻止它被垃圾收集。
>>> print x.__init__.__defaults__
({'any': [3, 13, 123213]},)