Secara umum, pointer adalah variabel yang menyimpan alamat atau referensi menuju lokasi data yang terdapat di memori. Pada bahasa C dan C++, pointer dapat digunakan secara eksplisit. Python tidak memiliki pointer eksplisit seperti C atau C++. Python menggunakan konsep object reference atau referensi objek. Ketika sebuah variabel diberikan suatu objek, variabel tersebut dapat dianggap sebagai referensi yang menunjuk kepada objek tersebut. Untuk melihat identitas objek, Python menyediakan fungsi id()
Contoh:
nilai = 10
x = nilai
print(id(nilai))
print(id(x))
Pada kondisi tersebut, nilai dan x merujuk pada objek yang sama. id() bukan alamat memori yang sebaiknya diperlakukan seperti pointer C. Dalam pembelajaran dasar, lebih tepat digunakan untuk melihat identitas objek.
Reference pada Python
Konsep reference menjadi sangat penting ketika bekerja dengan objek yang dapat diubah (mutable), seperti:
list
dict
set
Contoh:
nilai = [10, 20, 30]
data = nilai
data[0] = 100
print(nilai)
print(data)
Hasil:
[100, 20, 30]
[100, 20, 30]
nilai ikut berubah karena nilai dan data merujuk pada list yang sama.
Pointer/Reference sebagai Parameter Fungsi
Salah satu penggunaan pointer pada C/C++ adalah mengirim alamat variabel sebagai parameter fungsi sehingga fungsi dapat mengubah data asli.
Dalam Python, konsep tersebut dapat diterapkan dengan menggunakan object reference. Misalnya kita mempunyai sebuah list:
nilai = [10, 20, 30]
List tersebut dikirimkan sebagai parameter fungsi:
def ubah_data(data):
data[0] = 100
nilai = [10, 20, 30]
ubah_data(nilai)
print(nilai)
Hasil:
[100, 20, 30]
Fungsi ubah_data() dapat mengubah list asli karena parameter data merujuk pada objek list yang sama.
def ubah_nilai(data):
data[0] = 100
nilai = [10, 20, 30]
print("Sebelum:", nilai)
ubah_nilai(nilai)
print("Sesudah:", nilai)
Mengubah Seluruh Elemen Array melalui Fungsi
Konsep ini sangat berguna dalam algoritma pengolahan array. Misalnya kita ingin menggandakan seluruh nilai:
def kali_dua(data):
for i in range(len(data)):
data[i] = data[i] * 2
nilai = [10, 20, 30, 40, 50]
print("Sebelum:", nilai)
kali_dua(nilai)
print("Sesudah:", nilai)
Output:
Sebelum: [10, 20, 30, 40, 50]
Sesudah: [20, 40, 60, 80, 100]
Array sebagai Parameter Fungsi
Dalam Python, list dapat digunakan untuk merepresentasikan array satu dimensi. Contoh:
def tampilkan_array(data):
for i in range(len(data)):
print(data[i])
angka = [10, 20, 30, 40, 50]
tampilkan_array(angka)
Output:
10
20
30
40
50
Membuat Salinan Array
Jika kita ingin membuat objek list yang berbeda, dapat menggunakan .copy() Contoh:
a = [10, 20, 30]
b = a.copy()
b[0] = 100
print(a)
print(b)
Output:
[10, 20, 30]
[100, 20, 30]
Kesimpulan
Beberapa hal penting yang perlu dipahami:
- Python tidak mempunyai pointer eksplisit seperti C/C++.
- Python menggunakan konsep object reference.
- Variabel Python dapat merujuk pada objek yang sama.
listdapat digunakan sebagai representasi array satu dimensi.- Ketika
listdiberikan sebagai parameter fungsi, fungsi menerima reference terhadap objek tersebut. - Karena
listbersifat mutable, elemennya dapat diubah dari dalam fungsi. - Konsep ini memiliki fungsi yang mirip dengan penggunaan pointer/reference untuk memodifikasi array pada C/C++.
Slide materi dapat dilihat di sini.
