今天偶然遇到一个问题:
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)
<ipython-input-38-3f786850e387> in <module>()
----> 1 a
NameError: name 'a' is not defined
b --> [1, 2]
一瞬间有点反应不过来,不过仔细想想也就大概明白了。
del a[:]
相当于删除 a 中的每个元素,a 这个引用仍然在,同样的也会删除 b 中每个元素。而 del a
是直接删除 a 这个引用,但是 b 这个引用仍然在。