字典的clear()方法是否从内存中删除所有与项目相关的对象?
如果字典包含可变对象或自定义类的对象(例如查询集,甚至是DateTime),那么调用clear()
字典是否会从内存中删除这些对象?它的行为与遍历dict并del
执行它们不同吗?
例如。考虑
class MyClass(object):
'''Test Class.'''
my_obj_1 = MyClass()
my_obj_2 = MyClass()
my_dict = { 'foo' : my_obj_1, 'bar' : my_obj_2 }
然后是
my_dict.clear()
和…一样
for key in my_dict.keys():
del my_dict[key]
?
-
在类型的字典Python文档指出,
del d[key]
移除了d[key]
从字典,而d.clear()
删除了每个键,所以基本上他们的行为是一样的。关于内存问题,在Python中“删除”时,基本上是在删除对对象的引用。当一个对象没有被任何变量或其他对象引用或变得不可访问时,它就会变成 垃圾
,可以从内存中删除。Python有一个垃圾收集器,它会 不时地
执行这项工作,检查哪些对象是垃圾,并释放为其分配的内存。如果您要从字典中删除的对象被其他变量引用,那么它仍然可以访问,因此它不是垃圾,因此不会被删除。如果您有兴趣阅读有关垃圾收集的一般文章,特别是python的垃圾收集,请给我一些链接。