# 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.