del Deyimi - 2

10300

Bu konuya biraz değinmiştik.

del deyimi genel bir silme semantiği sağlar.

del <değişken listesi>
del a[ifade], ...

gibi bir yapısı vardır. Bir değişkeni del deyimi ile silersek o sanki hiç yaratılmamış gibi olur. Sonrasında o değişkeni kullanırsak NameError exception oluşur.

>>> a = 10
>>> del a
>>> a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined

del deyiminde , atomu ile tek hamlede birden fazla değişken silebiliriz, del a, b gibi.


Bir konuyu tekrar hatırlayalım: Python’da değişken ile nesne yani object kavramı farklı anlamlara gelmektedir. Python’da adres tutan yani bir nesneyi gösteren isimlere değişken denir. Değişkenin gösterdiği yere nesne denir. del deyimi değişkenleri siler, nesneleri değil. Nesnelerin silinmesi yorumlayıcı tarafından yürütülen çöp toplama, garbage collection mekanizmaları ile yapılır. Bir nesneyi gösteren bir değişken kalmazsa o nesne silinir.


del ile [] ile erişebildiğimiz veri yapıları elemanları da silinebilir. del a[3] gibi. Elbette demet gibi değiştirilemez veri yapılarında silme işlemi yapılamaz.

Yine önceki yazıda da belirttiğimiz gibi del a[2], a[5] dediğimiz zaman işlemler soldan sağa yapılır. Önce del[2] yapılır, sonra yeni listenin, örneğin 5 indeksli elemanı silinir. Yani orijinal listenin 6 indeksli elemanı aslında silinir.


del x[2:5] gibi dilimleme, slicing ile de silme işlemi yapılabilir.


Sözlüklerden silme işlemi yapınca sadece del x[anahtar] dediğimizde anahtar değil anahtar-değer çifti silinir.

10404