x = [1, 2, 3]
y = x
del xBu kod çalıştıktan sonra
[1, 2, 3] listesine ne olur?- aHemen silinir, çünkü
del xlistenin kendisini kaldırır - bCanlı kalır, çünkü
yhâlâ ona referans verir ve refcount yalnızca 2'den 1'e düşer✓ - cBuna yalnızca cycle-detecting collector karar verir; refcounting'in burada rolü yoktur
- d
del xhata fırlatır, çünkü başka bir isim aynı nesneye hâlâ referans verirken bir ismi silmek yasaktır
Açıklama:
del x, x adının bağlanmasını kaldırır ve nesnenin reference count'unu bir azaltır. y hâlâ aynı listeyi gösterdiği için refcount yalnızca 2'den 1'e düşer, bu yüzden CPython nesneyi canlı tutar. Liste ancak refcount 0'a ulaştığında, yani y de artık ona referans vermediğinde bellekten atılır.