You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何执行del list2后,print(list1)仍输出[1,2]?

Python中del变量后另一个引用仍能访问对象的原因

先看你的代码:

list2=[1,2]
list1=list2
del list2
print(list1)

你疑惑的核心是对Python变量与对象关系的理解偏差——Python的变量本质是指向对象的引用,而非直接存储对象本身。

拆解代码执行的完整逻辑:

  • list2=[1,2]:在内存中创建了一个列表对象[1,2],list2这个变量只是指向该对象的"引用标记"。
  • list1=list2:让list1也指向同一个列表对象,此时这个对象有两个引用(list1和list2)。
  • del list2:只是销毁了list2这个引用变量,并没有删除它指向的列表对象。只要还有其他引用(比如list1)指向该对象,Python的垃圾回收机制就不会清理这个对象。
  • 所以print(list1)仍能输出[1,2],因为list1还在指向那个列表对象。

补充:如果想让原列表对象被内存回收,需要让所有指向它的引用都消失——比如执行del list1,或者给list1赋值其他内容(如list1 = None),此时没有任何引用指向原列表,垃圾回收才会释放它占用的内存。

内容的提问来源于stack exchange,提问作者Chane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 04:57:02