Я хочу понять, почему:
-
a = []
; -
del a
; и -
del a[:]
;
ведут себя по-другому.
Я провел тест для каждого, чтобы проиллюстрировать различия, которые я видел:
>>> # Test 1: Reset with a = []
...
>>> a = [1,2,3]
>>> b = a
>>> a = []
>>> a
[]
>>> b
[1, 2, 3]
>>>
>>> # Test 2: Reset with del a
...
>>> a = [1,2,3]
>>> b = a
>>> del a
>>> a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
>>> b
[1, 2, 3]
>>>
>>> # Test 3: Reset with del a[:]
...
>>> a = [1,2,3]
>>> b = a
>>> del a[:]
>>> a
[]
>>> b
[]
Я нашел Различные способы очистки списков, но я не нашел объяснения различий в поведении. Может ли это объяснить это?