yiskw note

機械学習やプログラミングについて気まぐれで書きます

【Python】del 文について


Pythonのdel文はリストから要素を削除する場合や,
変数の削除にも使用することができます.

a = [1, 2, 3, 4, 5]
del a[2:4]

print(a)

出力

[1, 2, 5]

しかしながら,このdel文はインスタンスを破棄するのではなく,
あくまで参照カウントを1減らしているだけです.
インスタンスを破棄するためには,デストラク__del__()を呼び出すか,
インスタンスの参照カウンタを0にする必要があります.

以下はインスタンスを破棄できていない例です.

a = []
b = a
c = a
del a

print(b) # []

b.append("hoge")

print(c) # ['hoge']

一方で以下はインスタンスを破棄できている例です.

a = "hoge"

del a

print(a)

del文によってインスタンスを破棄し,メモリを解放したい場合は,
そのインスタンスが参照されているかどうかを確認する必要があり,注意が必要です.

Reference