奇怪的删除

今天偶然遇到一个问题:

a = [1, 2, 3, 4]
b = a
del a[:]
a --> []
b --> []
a = [1, 2, 3, 4]
b = a
del a
a 
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
 in ()                              
----> 1 a                                                                  
                                                                           
NameError: name 'a' is not defined                                         
b --> [1, 2]

一瞬间有点反应不过来,不过仔细想想也就大概明白了。
del a[:] 相当于删除 a 中的每个元素,a 这个引用仍然在,同样的也会删除 b 中每个元素。而 del a 是直接删除 a 这个引用,但是 b 这个引用仍然在。

你可能感兴趣的:(奇怪的删除)