Setiap program yang bermanfaat perlu mengingat nilai: nama pengguna, jumlah stok, atau hasil perhitungan sementara. Di Python, variabel adalah nama yang kita ikatkan ke sebuah object di memori, dan pengikatan tersebut dilakukan lewat pernyataan assignment dengan tanda sama dengan (=). Pada Chapter ini kita akan mempelajari berbagai bentuk assignment yang disediakan Python, mulai dari bentuk paling dasar sampai trik yang membuat kode lebih ringkas.

Membuat Variabel dengan Assignment #

Python tidak mengenal perintah deklarasi variabel seperti var atau let, dan interpreter Python juga tidak menuntut kita menyebut tipe data. Sebuah variabel tercipta pada saat pertama kali diberi nilai melalui assignment. Ketika interpreter Python membaca tanda =, interpreter mengevaluasi ekspresi di sisi kanan terlebih dahulu, kemudian mengikatkan nama di sisi kiri ke hasil evaluasi tersebut.

Mari kita lihat wujudnya dalam kode:

python
nama = "Budi"
umur = 17
print(nama)
print(umur)

Output yang Dihasilkan:

text
Budi
17

Mari kita telaah baris-baris kode di atas:

  1. Baris 1 (nama = "Budi"): interpreter mengevaluasi string "Budi" menjadi sebuah object bertipe str, lalu mengikatkan nama nama ke object tersebut.
  2. Baris 2 (umur = 17): interpreter membuat object bertipe int bernilai 17, lalu mengikatkan nama umur ke object itu.
  3. Baris 3 (print(nama)): fungsi print() membaca object yang ditunjuk nama, lalu mencetak Budi ke terminal.
  4. Baris 4 (print(umur)): fungsi print() mencetak 17 ke terminal.

Tidak ada tanda khusus di awal nama variabel dan tidak ada tanda titik koma di akhir pernyataan. Pembahasan lebih dalam tentang hubungan antara nama dan object akan kita pelajari pada Chapter Memahami Object dan Reference.

Memberi Nilai Baru (Rebinding) #

Isi variabel dapat diganti kapan saja selama program berjalan. Penugasan terbaru cukup mengarahkan nama tersebut ke object baru; nama-nama lain yang menunjuk ke object lama tidak terpengaruh.

python
stok = 10
print("Stok awal:", stok)
stok = stok - 4
print("Stok akhir:", stok)

Output yang Dihasilkan:

text
Stok awal: 10
Stok akhir: 6

Pada baris stok = stok - 4, interpreter membaca nilai stok yang lama (10), menguranginya dengan 4 menghasilkan object baru bernilai 6, lalu mengikatkan kembali nama stok ke object baru tersebut. Object lama 10 yang sudah tidak ditunjuk nama apa pun pada akhirnya akan dibersihkan dari memori oleh mekanisme garbage collection.

Multiple Assignment, Swap, dan Chained Assignment #

Python menyediakan tiga variasi assignment yang sering dipakai sehari-hari. Multiple assignment memungkinkan beberapa variabel diberi nilai sekaligus dalam satu baris:

python
x, y = 5, 10
print("Sebelum tukar:", x, y)
x, y = y, x
print("Setelah tukar:", x, y)

Output yang Dihasilkan:

text
Sebelum tukar: 5 10
Setelah tukar: 10 5

Pada baris x, y = y, x, interpreter mengevaluasi sisi kanan terlebih dahulu berdasarkan nilai saat itu (10 dan 5), baru kemudian hasilnya diikat ke x dan y. Urutan inilah yang membuat pertukaran nilai dua variabel berjalan mulus tanpa perlu variabel penampung sementara.

Chained assignment mengikatkan beberapa nama sekaligus ke object yang sama:

python
a = b = 0
print(a, b)
b = 99
print(a, b)

Output yang Dihasilkan:

text
0 0
0 99

Pada baris a = b = 0, kedua nama a dan b diarahkan ke object 0 yang sama. Ketika b diikat ulang ke 99, hanya nama b yang berpindah; nama a tetap menunjuk object 0.

Augmented Assignment #

Sering kali nilai baru dihitung dari nilai variabel itu sendiri. Python menyediakan bentuk ringkas yang disebut augmented assignment:

python
total = 100
total += 50
print(total)
total -= 30
print(total)

Output yang Dihasilkan:

text
150
120

Penulisan total += 50 memiliki arti yang sama dengan total = total + 50, hanya lebih ringkas dan lebih sulit salah ketik. Python menyediakan operator serupa untuk aritmetika lainnya (-=, *=, /=, //=, %=, **=); daftar lengkapnya akan kita bahas pada Section Operator dan Expression.

Variabel _ di REPL #

Saat mencoba-coba kode di sesi interaktif (REPL), interpreter Python menyimpan hasil ekspresi terakhir ke variabel khusus bernama _ (satu karakter garis bawah):

python
>>> 25 * 4
100
>>> _ + 1
101

Pada sesi di atas, 25 * 4 menghasilkan 100, lalu _ otomatis menampung nilai tersebut sehingga bisa dipakai pada ekspresi berikutnya. Fitur ini nyaman untuk perhitungan bertahap tanpa harus mendefinisikan nama variabel.