Memahami cara kerja alias dan referensi untuk mengindari Bug

By | April 6, 2025
112 Views

Memahami cara kerja alias dan referensi untuk mengindari Bug, ini topik penting banget, apalagi kalau kamu main manipulasi data atau image processing. Karena saya pernah mengalami hal ini sehingga butuh agak lama untuk nemuin error kode yang terjadi pada proses proses pelatihan. Jika kalian pernah baca Kenapa saat pakai augmentasi data, loss-nya malah naik? saya pikir karena proses augmentasi yang memang berjalan seperti itu, tapi malah saya melakukan copy object list sehingga mengubah semua dataset. Bikin jengkel nya itu lho yang butuh waktu beberapa belas jam menyadari akan hal tersebut mengingat 1 iterasi butuh sekitar 1 jam 22 menit sehingga grafik loss akan nampak ketika beberapa kali iterasi! Hal ini menyadarkan bahwa perlu kehatian2 ketika melakukan copy list dan melakukan modifikasinya didalamnya sehingga tidak mudah menerka ada bug di library yang kita gunakan!

Memahami cara kerja alias dan referensi sangat penting untuk menghindari bug yang tidak terlihat, terutama saat bekerja dengan struktur data seperti list. Artikel ini akan membahas secara lengkap apa itu alias, bagaimana pengaruhnya dalam manipulasi data, dan bagaimana cara menghindari masalah yang ditimbulkannya.

Python menggunakan sistem object reference, artinya ketika kita menyimpan suatu list ke dalam variabel, variabel tersebut tidak menyimpan nilai list, melainkan referensi ke objek list di memori.

Perhatikan kasus berikut

>>> a = list()
>>> a.append('satu')
>>> a.append('dua')

kemudian saya buat variabel b sekaligus memanipulasi index ke 0

>>> b = a
>>> b[0]='empat'

apa yang terjadi dengan variabel a?

>>> a
['empat', 'dua']

maka variabel a pada index 0 pun jadi berubah!

mari kita lakukan copy() sekaligus mengubah index 0

>>> b = a.copy()
>>> b[0]='lima'

mari kita cek variabel a nya, apakah ikut berubah?

>>> a
['empat', 'dua']

Ternyata sudah tidak berubah! sebenarnya untuk cara diatas kurang hati-hati karena kadang didalam list ada list lagi, maka kalian butuh deep copy

See also  Converter Youtube ke Mp3 tanpa iklan

1. Gunakan .copy() untuk Shallow Copy

a = [1, 2, 3]
b = a.copy()

b[0] = 99
print(a)  # [1, 2, 3]

2. Gunakan copy.deepcopy() untuk list bersarang

import copy

a = [[1, 2], [3, 4]]
b = copy.deepcopy(a)

b[0][0] = 99
print(a)  # [[1, 2], [3, 4]]

Shallow copy hanya salin referensi elemen dalamnya, sementara deep copy salin semuanya sampai ke dalam.