这是菜鸟教程关于del语句的描述
您也可以使用del语句删除一些对象的引用。
del语句的语法是:
del var1[,var2[,var3[....,varN]]]
您可以通过使用del语句删除单个或多个对象的引用。例如:
del var
del var_a, var_b
以下是这位仁兄关于del语句的描述(网址:python中del语句)
有一种方式可以从列表按照给定的索引而不是值来移除一个元素: 那就是 del 语句。
它不同于会返回一个值的 pop() 方法。
del 语句也可以用来从列表中移除切片或者清空整个python列表(我们之前用过的方式是将一个空列表赋值给指定的切片)。 例如:
>>> 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 也可以被用来删除整个变量
此后再引用 a 时会报错(直到另一个值被赋给它)。我们会在后面了解到 del 的其他用法。
看到这里还是很疑惑,特别是“del 也可以被用来删除整个变量”这句,不知道和C++的free有什么区别。下面看了这位的,才稍微懂了一点(网址:Python中的del用法)
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删除的是变量,而不是数据。
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
原来,del删除的是变量,而不是数据。del删除a0变量,但是a0中存储的变量才能不会消失。
另外,关于这句 first = li[0]
拷贝列表,也不会有数据对象的复制,而是创建新的变量引用,通俗来讲,无论是 first = li[0]
这种拷贝列表,还是del li[0]
这种del语句,都不会对数据造成影响,复制和删除的仅仅是那份引用而已。
版权所有:可定博客 © WNAG.COM.CN
本文标题:《Python中DEL语句的运用》
本文链接:https://cloud.tencent.com/developer/article/1817666
特别声明:除特别标注,本站文章均为原创,本站文章原则上禁止转载,如确实要转载,请电联:wangyeuuu@qq.com,尊重他人劳动成果,谢过~