【发布时间】:2018-08-14 00:05:50
【问题描述】:
我正在使用大型嵌套字典,并尝试删除嵌套子字典。我想知道为什么会出现以下行为。
当我设置对字典 d 的引用(称为 ref),然后我更改 ref 并打印 d,它显示了 d 的更新版本,并添加了第三个元素。
input:
d={"a":1,"b":2}
ref=d
ref["c"]=3
print(d)
output:
{'a': 1, 'b': 2, 'c': 3}
鉴于这种行为,我希望能够通过 delete 删除字典
input:
d={"a":1,"b":2}
ref=d
del ref
print(d)
output:
{'a': 1, 'b': 2}
我想知道当我删除引用时是否有办法删除原始对象(意味着第二个程序的输出会出错,因为 d 被删除了。
【问题讨论】:
-
你不能在 Python 中删除对象——你所能做的就是删除引用,对象会在所有对它的引用消失后自动消失。
-
您正在删除该名称。如果一个对象没有更多名称,Python 可能会也可能不会对它进行垃圾收集。
-
@PeterWood 我相信 CPython 会立即回收一个引用计数变为 0 的对象。当然,语言不能保证这一点,实际上,这不起作用比如说,Jython。
标签: python dictionary ref