由于python都是引用,而python有GC机制,所以,del语句作用在变量上,而不是数据对象上。

python 中 del 的用法

  • 用法一
>>> a = [1, "two", 3, "four"]
>>> del a[0]         #删除列表a中,下标为0的元素
>>> a
['two', 3, 'four']
>>> a.append("five")
>>> a.append(6)
>>> a
['two', 3, 'four', 'five', 6]
>>> del a[2:4]        #删除a从下标为2到4的元素,含头不含尾
>>> a
['two', 3, 6]
>>> del a             #删除列表a
>>> a
Traceback (most recent call last):File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
  • 用法二 转自 第七城市

    1. 首先介绍下:python的对象引用 
      1.1 列表内容:python不允许程序员选择采用传值还是传引用。Python参数传递采用的肯定是“传对象引用”的方式。实际上,这种方式相当于传值和传引用的一种综合。如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值——相当于通过“传引用”来传递对象。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能直接修改原始对象——相当于通过“传值’来传递对象。 
      1.2 当人们复制列表或字典时,就复制了对象列表的引用同,如果改变引用的值,则修改了原始的参数。 
      1.3为了简化内存管理,Python通过引用计数机制实现自动垃圾回收功能,Python中的每个对象都有一个引用计数,用来计数该对象在不同场所分别被引用了多少次。每当引用一次Python对象,相应的引用计数就增1,每当消毁一次Python对象,则相应的引用就减1,只有当引用计数为零时,才真正从内存中删除Python对象。

    2. del 删除引用而不是删除对象,对象由自动垃圾回收机制删除 
      看这个例子:

>>> x = 1
>>> del x
>>> x
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
x
NameError: name 'x' is not defined
>>> x = ['Hello','world']
>>> y = x
>>> y
['Hello', 'world']
>>> x
['Hello', 'world']
>>> del x
>>> x
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
x
NameError: name 'x' is not defined
>>> y
['Hello', 'world']
>>>

可以看到x和y指向同一个列表,但是删除x后,y并没有受到影响。这是为什么呢? 
The reason for this is that you only delete the name,not the list itself,In fact ,there is no way to delete values in python(and you don’t really need to because the python interpreter does it by itself whenever you don’t use the value anymore) 
举个例子,一个数据(比如例子中的列表),就是一个盒子,我们把它赋给一个变量x,就是好像把一个标签x贴到了盒子上,然后又贴上了y,用它们来代表这个数据,但是用del删除这个变量x就像是把标有x的标签给撕了,剩下了y的标签。 
再看一个例子: 
shoplist = [‘apple’, ‘mango’, ‘carrot’, ‘banana’] 
print (‘The first item I will buy is’, shoplist[0]) 
olditem = shoplist[0] 
del shoplist[0] #del的是引用,而不是对象 
print (‘I bought the’,olditem) 
print (‘My shopping list is now’, shoplist) 
print(shoplist[0]) 
结果为: 
The first item I will buy is apple 
I bought the apple 
My shopping list is now [‘mango’, ‘carrot’, ‘banana’] 
mango

文章转载自:https://blog.csdn.net/weihongxu2222/article/details/51320006

python之del相关推荐

  1. python使用del保留字定义一个函数-函数和代码复用 --Python

    1.关于递归函数的描述,以下选项中正确的是 A.包含一个循环结构 B.函数比较复杂 C.函数内部包含对本函数的再次调用 D.函数名称作为返回值 答案:D 答案解析:递归函数是指函数内部包含对本函数的再 ...

  2. python 中del 的用法

    python中的del用法比较特殊,新手学习往往产生误解,弄清del的用法,可以帮助深入理解python的内存方面的问题. python的del不同于C的free和C++的delete. 由于pyth ...

  3. python中del和pop的区别_python中的del,remove,pop有什么区别

    python中有3个删除元素的方法:del remove pop 虽然它们都是删除元素,用于删除列表.字符串等里面的元素,但是用法可不完全一样,元组由于是不可变的,所以不能使用哦!那么接下来就来看看它 ...

  4. python中del是什么意思_python中del是什么意思?

    在python中,del有"删除"的意思,可以删除列表中的某个元素,也可以删除整个列表.del是根据索引(元素所在位置)来删除元素的:del删除的是变量,而不是数据. del可以删 ...

  5. python 中 del 的用法

    python 中 del 的用法 用法一 >>> a = [1, "two", 3, "four"] >>> del a[0 ...

  6. python -使用del语句删除对象引用

    使用del语句删除一些对象引用. 注意不是把内存地址删了,你只是删除了引用,它就变为了一个可回收的对象,内存会不定期回收. del语句的语法是: del var1[,var2[,var3[....,v ...

  7. python中del和remove的区别_Python列表删除元素del、pop()和remove()的区别小结

    前言 在python列表的元素删除操作中, del, pop(), remove()很容易混淆, 下面对三个语句/方法作出解释 del语句 del语句可以删除任何位置处的列表元素, 若知道某元素在列表 ...

  8. python中del语句

    有一种方式可以从列表按照给定的索引而不是值来移除一个元素: 那就是 del 语句. 它不同于会返回一个值的 pop() 方法. del 语句也可以用来从列表中移除切片或者清空整个python列表(我们 ...

  9. python中del什么意思_python del函数是什么以及如何使用?

    这是关于Python里比较难得一个函数,甚至于章节不多,但是讲的内容却很多很多,大家对部分内容不知道有没有过了解--面向对象,而在这里主要用到的函数就是del,大家如果不知道的话,可以跟随小编一起来看 ...

最新文章

  1. 进击的 JavaScript 之(七) 原型链
  2. JAVA中常见的Exception
  3. 最小割板子题——[USACO5.4]奶牛的电信
  4. Qt Creator列表和其他数据模型
  5. Qt学习笔记之网络编程
  6. python选择排序从大到小_Python实现选择排序
  7. python编程设计登录和注册程序_小白成长记-----python实现注册的小程序
  8. 第二次作业(贪吃蛇)
  9. android 多个模块,Android 模块化中两个模块之间传递model
  10. 斑图的matlab程序,斑图生成
  11. 华为(H3C)visio图库,是完全版的包括PPT格式与VISIO格式
  12. 计算机技术产生的就业辩论,计算机与软件技术系辩论赛决赛
  13. android root统计,《全球安卓手机 Root 数据报告》:学生党竟然是Root的骨灰级爱好者?...
  14. 【debug】EACCES: permission denied, unlink
  15. Excel 2010 VBA 入门 071 工作表事件之Worksheet_Change
  16. objective-c类别catagory的作用?
  17. 封装一个可以设置微信小程序的本地缓存接口过期时间的方法!
  18. 六大类二叉树面试题汇总解答
  19. html 漂浮浏览器,HTML5浏览器嵌入窗口程序解决方案 | Hoverlees#39; Blog
  20. CTP开发——登录/查询

热门文章

  1. 用友显示用友通服务器,用友T3用友通客户端不能连接服务器,无法登陆
  2. 11、乐趣国学—践行《弟子规》的“信”懂得处世之道(上篇)
  3. HDU 2546 饭卡 01背包变形
  4. C#格式化字符串,日期,时间,货币
  5. 删除pdf复制过来文字的回车或空格
  6. 7FRESH揭开神秘面纱,无界零售下的生鲜之路该怎么走?
  7. 【附源码】计算机毕业设计Python安卓基于node的关于食物的减肥APP44gvx(源码+程序+LW+调试部署)
  8. Go数据结构与算法-双向链表
  9. Android网上相亲交友婚恋app软件设计
  10. sqlserver战德臣_数据库系统基础讲义第06讲SQL语言之概览.pdf