分享

del真正含义

 融水公子 2018-09-11
注意一个问题:
python中的del用法比较特殊,新手学习往往产生误解,弄清del的用法,
可以帮助深入理解python的内存方面的问题。
python的del不同于C的free和C++的delete。
由于python都是引用,而python有GC机制,所以,del语句作用在变量上,而不是数据对象上。
del删除的是变量,而不是数据。
您可以通过使用del语句删除单个或多个对象的引用。例如:
del var
del var_a, var_b
实例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
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
#将a和b del之后,1的引用计数仍然为1,所以不会被清除


实例2:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
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 
-----------------------------------------------------------------------
del 语句
使用 del 语句可以从一个列表中依索引而不是值来删除一个元素。这与使用 pop() 返回一个值不同。可以用 del 语句从列表中删除一个切割,或清空整个列表(我们以前介绍的方法是给该切割赋一个空列表)。例如:
>>> a = [-1, 1, 66.25, 333, 333, 1234.5]
>>> del a[0]
>>> a
[1, 66.25, 333, 333, 1234.5]
>>> del a[2:4]
>>> a
[1, 66.25, 1234.5]
>>> del a[:]
>>> a
[]
也可以用 del 删除实体变量:
>>> del a
-----------------------------------------------------------------------






分享知识,分享快乐!希望中国站在编程之巅!

               ----

公众微信号:rsgz520

360图书馆馆号:rsgz002.360doc.com 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多