转自 https://blog.csdn.net/love1code/article/details/47276683
python 中的 del 用法比较特殊, 新手学习往往产生误解, 弄清 del 的用法, 可以帮助深入理解 python 的内存方面的问题.
python 的 del 不同于 C 的 free 和 C++ 的 delete.
由于 python 都是引用, 而 python 有 GC 机制, 所以, del 语句作用在变量上, 而不是数据对象上.
- if __name__=='__main__':
- a=1 # 对象 1 被 变量 a 引用, 对象 1 的引用计数器为 1
- b=a # 对象 1 被变量 b 引用, 对象 1 的引用计数器加 1
- c=a #1 对象 1 被变量 c 引用, 对象 1 的引用计数器加 1
- del a #删除变量 a, 解除 a 对 1 的引用
- del b #删除变量 b, 解除 b 对 1 的引用
- print(c) #最终变量 c 仍然引用 1
del 删除的是变量, 而不是数据.
另外, 关于 list.
- if __name__=='__main__':
- li=[1,2,3,4,5] #列表本身不包含数据 1,2,3,4,5, 而是包含变量: li[0] li[1] li[2] li[3] li[4]
- first=li[0] #拷贝列表, 也不会有数据对象的复制, 而是创建新的变量引用
- del li[0]
- print(li) #输出 [2, 3, 4, 5]
- print(first) #输出 1
来源: http://www.bubuko.com/infodetail-2697635.html