# Nakafa Framework: LLM URL: /id/subject/university/bachelor/ai-ds/ai-programming/immutable-mutable-identity Source: https://raw.githubusercontent.com/nakafaai/nakafa.com/refs/heads/main/packages/contents/subject/university/bachelor/ai-ds/ai-programming/immutable-mutable-identity/id.mdx Output docs content for large language models. --- export const metadata = { title: "Immutable, Mutable, dan Identity", description: "Kuasai konsep mutabilitas, identitas, dan manajemen memori objek Python. Pelajari cara kerja list, referensi, dan identitas objek dengan contoh praktis.", authors: [{ name: "Nabil Akbarazzima Fatih" }], date: "09/18/2025", subject: "Pemrograman AI", }; ## List dan Mutabilitas Dalam Python, list merupakan struktur data yang dapat diubah setelah dibuat. Mari kita pahami bagaimana perilaku list ketika kita melakukan operasi tertentu. Ketika kamu membuat sebuah list dan menyimpannya dalam variabel, Python tidak menyalin isi list tersebut. Sebaliknya, variabel tersebut menyimpan referensi atau alamat memori tempat list berada. Bayangkan seperti alamat rumah, variabel hanya menyimpan alamat, bukan rumahnya sendiri. Perhatikan bagaimana perubahan pada `list1` juga mempengaruhi `list2`. Ini terjadi karena `list2` tidak menyimpan salinan `list1`, melainkan referensi ke objek list yang sama di memori. ### Operasi Slice Menciptakan Salinan Baru Berbeda dengan assignment biasa, operasi slice pada list akan menciptakan objek list baru di memori. Kamu dapat membuktikan ini dengan menggunakan fungsi `id()` yang mengembalikan alamat memori objek. ## Identitas, Tipe, dan Nilai Objek Setiap objek dalam Python memiliki tiga karakteristik penting yang membedakannya dari objek lain. B[Identitas] A --> C[Tipe] A --> D[Nilai] B --> B1[Alamat memori unik] C --> C1[Menentukan operasi] D --> D1[Data yang disimpan] `} /> ### Identitas Objek Identitas adalah alamat memori unik tempat objek disimpan. Python menyediakan fungsi `id()` untuk melihat identitas objek dan operator `is` untuk membandingkan identitas dua objek. print(id(a)) # 10120 b = a # b mereferensi objek yang sama dengan a print(id(b)) # 10120 (sama dengan a) a = a + 1 # Membuat objek baru print(id(a)) # 10492 (berbeda dari sebelumnya)` } ]} /> ### Perbandingan Identitas dan Nilai Python memiliki optimisasi khusus untuk integer kecil (biasanya sampai ). Integer dalam rentang ini menggunakan objek yang sama di memori untuk menghemat ruang. ## Objek Mutable dan Immutable Python mengklasifikasikan objek berdasarkan kemampuannya untuk diubah setelah dibuat. ### Objek Immutable Objek immutable tidak dapat diubah setelah dibuat. Setiap operasi yang tampak mengubah objek sebenarnya menciptakan objek baru. Tipe data immutable dalam Python meliputi: - `bool` (boolean) - `int` (integer) - `float` (floating point) - `complex` (bilangan kompleks) - `str` (string) - `tuple` (tuple) ### Objek Mutable Objek mutable dapat diubah setelah dibuat tanpa menciptakan objek baru. Identitas objek tetap sama meskipun nilainya berubah. Tipe data mutable dalam Python meliputi: - `list` (list) - `dict` (dictionary) - `set` (set) ### Perilaku Assignment vs Modifikasi Penting untuk membedakan antara assignment (pemberian nilai baru) dan modifikasi in-place. C[Objek List
Data: 0, 1, 2] B[list2] --> C end subgraph Sesudah ["Sesudah list1[1] = x"] D[list1] --> F[Objek List yang sama
Data: 0, x, 2] E[list2] --> F end Sebelum -.-> Sesudah `} /> Pemahaman tentang mutabilitas sangat penting dalam pemrograman Python. Objek immutable lebih aman untuk digunakan dalam konteks multi-threading karena tidak dapat diubah, sedangkan objek mutable memberikan fleksibilitas untuk memodifikasi data secara efisien tanpa menciptakan objek baru setiap kali.