当前位置: 首页 > 面试题库 >

字典的clear()方法是否从内存中删除所有与项目相关的对象?

孙言
2023-03-14
问题内容

如果字典包含可变对象或自定义类的对象(例如查询集,甚至是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的垃圾收集,请给我一些链接。

  • http://en.wikipedia.org/wiki/垃圾收集_(计算机科学)
  • http://www.digi.com/wiki/developer/index.php/Python_Garbage_Collection
  • http://www.doughellmann.com/PyMOTW/gc/
  • http://docs.python.org/library/gc.html


 类似资料:
  • 问题内容: 在Python中,至少有两种方法可以使用键从字典中删除项目。 两种方法都会从字典中删除项目。 我想知道这些方法之间有什么区别,以及在哪种情况下应该使用其中一种。 问题答案: 如果要 捕获已删除的项目 ,请使用,例如。 使用,如果你想 从字典中删除项目 。 如果要删除,则在密钥不在词典中时禁止显示错误:

  • 问题内容: 我在Python中有一个比较大的字典,希望不仅能够从其中删除项目,而且实际上可以从程序中的这些删除中 回收 内存。我遇到了一个问题,尽管我从字典中删除了项目,甚至手动运行了垃圾收集器,但Python似乎并没有释放内存本身。 一个简单的例子: 我想象发生了什么事,尽管删除了条目并运行了垃圾回收器,但是Python并没有继续调整字典的大小。我的问题是,是否有任何简单的方法可以解决此问题,或

  • 问题内容: 按值从字典中删除某项的最佳方法是什么,即当该项的键未知时?这是一个简单的方法: 有更好的方法吗?迭代字典时从字典中进行变异(删除项目)有什么问题吗? 问题答案: 请注意,您当前正在测试对象的身份(仅当两个操作数由内存中的同一对象表示时才返回- 与相等的两个对象并不总是这样)。如果您故意这样做,则可以将代码重写为 但这可能无法满足您的要求: 因此,您可能想要代替。

  • 问题内容: 我试图找到一些可以使用qt布局并从中删除所有内容的东西。只是想像一下窗口是什么样子-我有: 所以我需要可以递归调用的东西,以清除并删除父母的所有东西。我尝试了这里提到的事情(在pyqt中清除布局中的所有小部件),但是它们都不起作用(无论如何都没有标记正确答案)。我的代码如下所示: 但这给出了一个错误: =>编辑这种方法很有效(但是,除了: 问题答案: 清除布局的最安全方法是使用其tak

  • 本文向大家介绍Python程序将字典中的所有项目相乘,包括了Python程序将字典中的所有项目相乘的使用技巧和注意事项,需要的朋友参考一下 当需要将字典中的所有元素相乘时,将对字典中的键值进行迭代。该键与上一个键相乘,并确定输出。 字典是一组键值对。 示例 以下是相同的演示- 输出结果 解释 定义了一个字典。 为变量分配一定的值。 字典中的“键”被迭代。 在每个步骤中,此键都将与先前分配的变量相乘

  • Python3 字典 描述 Python 字典 clear() 函数用于删除字典内所有元素。 语法 clear()方法语法: dict.clear() 参数 NA。 返回值 该函数没有任何返回值。 实例 以下实例展示了 clear()函数的使用方法: #!/usr/bin/python3 dict = {'Name': 'Zara', 'Age': 7} print ("字典长度 : %