del 语句在删除变量时,是解除变量对数据的引用,而不是直接删除数据,不是把内存地址删了,只是删除了引用,数据就变为了一个可回收的对象,然后内存会被不定期回收。
a = 1 # 对象 1 被变量a引用,对象1的引用计数器为1
b = a # 对象 1 被变量b引用,对象1的引用计数器加1
c = a # 对象 1 被变量c引用,对象1的引用计数器加1
del a # 删除变量a,解除a对1的引用
del b # 删除变量b,解除b对1的引用
print(c) # 1 最终变量c仍然引用1
# 对列表
li = [1, 2, 3, 4, 5]
first = li[0] # 赋值
del li[0] # 先赋值再删除,赋值还是存在的
print(li) # [2, 3, 4, 5]
print(first) # 1
# 对字典
di = {'身高':175, '体重':65}
del di['体重']
print(di) # {'身高': 175}
# del语句可以删除任何变量, 删除之后变量就调用不到了, 只能重新定义
a = 1
b = "1"
c = [1, 2]
d = (1, 2)
e = {"身高":1}
f = {1, 2}
del a, b, c, d, e, f
# print(a, b, c, d, e, f) # NameError: name 'a' is not defined