Pernah suatu hari anbi mendebug suatu program yang dibuat dari bahasa Python. Disitu, anbi sedang menemukan ada suatu variabel yang sangat aneh. Variabel tersebut selalu terdefinisi padahal didefinisikan diawal program. Tetapi pada pertengahan program, variabel tersebut berubah - ubah nilainya. Padahal tidak ada satupun kode yang mengubah variabel tersebut. Anbi mendefinisikan variabel tersebut dengan nilai variabel lain, yaitu seperti ini :
Anbi berniat membuat rekaman nilai awal ( 9) untuk nilai yang ada di variabel 0. Sehingga ketika 0 dikalkulasi ditengah program, anbi tetap memiliki nilai awal yang belum di kalkulasi ( 9).“Nah, menurut kawan - kawan semua? dimana letak kesalahan anbi?" Alamat Sebuah VariabelOke, yang belum menemukan letak kesalahan anbi diatas, mari kita bahas disini. Didalam Python, semuanya adalah object. Mulai dari String, number, list, dictionary, class ,function, 3, 4 dan 5 itu semua adalah object. Python akan menempatkan masing - masing nilai object tersebut kedalam sebuah memory address.Oke, sebagai contoh anbi buat 2 variabel dan kita lihat masing - masing memory address dari variabel tersebut menggunakan fungsi 6.
Bisa kita lihat Masing - masing nilai dari variabel diatas memiliki alamat memori ( 7) sendiri.Tetapi jangan salah, setiap alamat memory mewakili nilai, bukan variabel. Sehingga ketika membuat variabel, nilai pada variabel akan ditempatkan pada sebuah alamat memori, dan variabel hanya mereferensikan alamat memori. Maksudnya bagaimana? Oke kita punya kasus seperti ini :
Kenapa variabel 8 tiba - tiba berubah? padahal kita tidak melakukan operasi apapun pada variabel 8. Padahal yang kita operasikan variabel 0 kenapa efeknya bisa sampai ke 8?Coba kita lihat alamat memori masing - masing variabel :
Ternyata kedua variabel tersebut memiliki alamat memori yang sama. Hal ini sama seperti saat kita mendefinisikan dua variabel dengan nilai yang sama dalam satu baris.
Yak, seperti itu kira - kira hal yang kita alami. Lalu bagaimana jika kita buat variabel 8 dengan nilai yang berbeda dari variabel 0.
Kalian lihat, alamat memori mereka berbeda. Inilah maksud dari “alamat memori mewakili nilai”. Dan tugas dari variabel adalah mereferensikan alamat memori tersebut. Variaebl Dan Alamat Memori Lalu bagaimana dengan variabel bernilai 5 atau 6? Apakah mereka juga membagikan alamat memori yang sama?Kita ambil kasus dengan contoh seperti ini :
0Bisa kita lihat dari output diatas, kedua variabel tersebut memiliki alamat memori yang sama. Sehingga ketika terdapat penambahan data di 7, maka variabel 8 juga ikut berubah.Membuat Alamat Baru, Dengan Nilai SamaDari penjelasan sebelumnya kita bisa menyimpulkan bahwa dalam Python, setiap nilai memiliki alamatnya masing - masing. Lalu bagaimana cara kita membuat nilai yang sama, dari dua variabel yang berbeda tanpa membagi memori address yang sama?. Mudah, kita hanya perlu fungsi 9. 1 2Fungsi 9 digunakan untuk menduplikasi nilai dan membuatkan alamat memori tersendiri untuk nilai tersebut. Dengan ini variabel - variabel tersebut akan menjadi independen. 3 4Sekarang kita bisa menduplikasi nilai variabel tanpa takut akan mengubah nilai pada variabel lain. Sama, Tapi Tidak SamaSekarang mari coba kita telaah lebih dalam lagi, “Apakah variabel - variabel yang kita buat untuk mereferensikan alamat memori sebuah nilai itu sama?" Disinilah operator perbandingan, 1 akan membuktikan segalanya.Dalam perbandingan, double equals ( 2) digunakan untuk membandingkan dua objek dan melihat apakah mereka itu objek yang sama atau tidak.Tetapi berbeda dengan 1, operator ini akan membandingkan dua objek dan melihat apakah mereka itu objek yang sama, serta melihat apakah mereka memiliki alamat memori yang sama atau tidak.Contoh : 5 6Keduanya merupakan objek yang sama dengan alamat memori yang sama. Coba kita bandingkan dengan nilai 4 yang jelas - jelas memiliki nilai yang sama. 7 8Walaupun mereka memiliki nilai yang sama, akan tetapi operator 1 tetap menyebut itu berbeda. Dikarenakan alamat memori mereka yang berbeda.. . .Itulah singkat cerita tentang alamat memori yang terjadi pada saat kita membuat variabel. Lalu apakah pembahasannya berhenti disini? tidak dong nanti anbi bahas lebih jauh lagi tentang Python Reference |