Walrus Operator
Walrus Operator adalah operator assignment expression yang ditulis menggunakan simbol :=.
Fitur ini diperkenalkan pada Python 3.8.
Nama walrus operator berasal dari bentuk simbol := yang dianggap menyerupai mata dan gading hewan walrus.
Walrus Operator memungkinkan kita melakukan dua hal sekaligus:
- Menyimpan sebuah nilai ke dalam variabel.
- Menggunakan nilai tersebut sebagai bagian dari sebuah expression.
Sintaks Dasar
Bentuk umum Walrus Operator adalah:
(variable := expression)
Contoh:
if (n := 10) > 5:
print(n)
Pada kode tersebut:
n := 10
menyimpan nilai 10 ke variabel n.
Nilai tersebut kemudian langsung digunakan untuk mengevaluasi:
n > 5
Output:
10
Assignment Biasa vs Walrus Operator
Tanpa Walrus Operator, assignment biasanya dilakukan dalam statement terpisah.
n = 10
if n > 5:
print(n)
Dengan Walrus Operator:
if (n := 10) > 5:
print(n)
Walrus Operator menggabungkan assignment dan evaluasi expression dalam satu bagian kode.
Mengapa Menggunakan Walrus Operator?
Salah satu kegunaan utama Walrus Operator adalah menghindari perhitungan yang sama secara berulang.
Misalnya kita memiliki kode:
a = "Hello World"
if len(a) > 10:
print(f"Too long: {len(a)} elements")
Pada kode tersebut, len(a) dihitung dua kali.
Pertama:
len(a) > 10
Kemudian:
f"Too long: {len(a)} elements"
Kita dapat menyimpan hasil len(a) menggunakan Walrus Operator.
a = "Hello World"
if (n := len(a)) > 10:
print(f"Too long: {n} elements")
Sekarang hasil len(a) disimpan ke variabel n dan dapat digunakan kembali.
Output:
Too long: 11 elements
Walrus Operator pada if
Walrus Operator dapat digunakan ketika sebuah nilai perlu dihitung terlebih dahulu dan hasilnya langsung digunakan untuk menentukan kondisi.
Contoh:
name = "Budi"
if (length := len(name)) > 3:
print(f"Nama memiliki {length} karakter")
Output:
Nama memiliki 4 karakter
Pada kode tersebut:
len(name)
dihitung satu kali.
Hasilnya disimpan ke:
length
Kemudian length digunakan dalam kondisi:
length > 3
Walrus Operator pada while
Walrus Operator juga dapat digunakan pada kondisi while.
Hal ini berguna ketika nilai yang digunakan sebagai kondisi perlu diperbarui pada setiap iterasi.
Contoh:
a = "Hello World"
while (n := len(a)) > 1:
print(n)
a = a[:-1]
print(a)
Pada setiap iterasi:
len(a)
dihitung dan hasilnya disimpan ke variabel n.
Kemudian Python memeriksa:
n > 1
Selama kondisi tersebut bernilai True, perulangan terus berjalan.
Cara Kerja Contoh while
Misalnya nilai awal:
a = "Hello World"
Panjang string adalah:
11
Sehingga:
n = 11
Kemudian string dipotong satu karakter:
Hello Worl
Pada iterasi berikutnya:
n = 10
Proses tersebut terus berlangsung sampai panjang string tidak lagi lebih besar dari 1.
Pada akhirnya tersisa:
H
Walrus Operator dan Input User
Walrus Operator juga dapat digunakan ketika mengambil input berulang kali.
Contoh:
while (command := input("Masukkan perintah: ")) != "quit":
print(f"Perintah: {command}")
Program akan terus meminta input selama pengguna tidak memasukkan:
quit
Variabel command mendapatkan nilai dari input() sekaligus digunakan dalam kondisi while.
Perhatikan Penggunaan Tanda Kurung
Walrus Operator biasanya ditulis menggunakan tanda kurung agar expression lebih jelas.
Contoh:
if (n := len("Python")) > 3:
print(n)
Bentuk tersebut lebih mudah dibaca daripada mencoba menggunakan assignment expression tanpa struktur yang jelas.
Tanda kurung juga membantu menunjukkan bahwa:
n := len("Python")
merupakan expression yang hasilnya kemudian dibandingkan dengan:
> 3
Walrus Operator Bukan Pengganti =
Operator = dan := memiliki penggunaan yang berbeda.
Assignment biasa
name = "Budi"
Digunakan untuk melakukan assignment dalam sebuah statement.
Walrus Operator
(name := "Budi")
Digunakan untuk melakukan assignment sekaligus menghasilkan nilai dalam sebuah expression.
Contoh:
if (name := "Budi"):
print(name)
Output:
Budi
Kapan Sebaiknya Menggunakan Walrus Operator?
Walrus Operator sebaiknya digunakan ketika membuat kode menjadi lebih jelas atau menghindari perhitungan yang tidak perlu.
Contoh penggunaan yang masuk akal:
if (length := len(data)) > 100:
print(f"Data terlalu panjang: {length}")
Tanpa Walrus Operator:
length = len(data)
if length > 100:
print(f"Data terlalu panjang: {length}")
Keduanya benar.
Walrus Operator tidak selalu membuat kode lebih baik. Jika penggunaannya membuat kode sulit dibaca, assignment biasa justru lebih baik.
Kelebihan Walrus Operator
Beberapa manfaat Walrus Operator:
- Mengurangi pengulangan perhitungan.
- Memungkinkan assignment dan evaluasi dilakukan dalam satu expression.
- Berguna pada kondisi
if. - Berguna pada kondisi
while. - Dapat membuat beberapa pola kode menjadi lebih ringkas.
- Menghindari pemanggilan function yang sama berkali-kali ketika hasilnya dapat digunakan kembali.
Hal yang Perlu Diperhatikan
Walrus Operator merupakan fitur yang relatif lebih baru dibandingkan konsep dasar Python.
Karena itu, jangan menggunakan := hanya untuk membuat kode terlihat lebih singkat.
Perhatikan contoh berikut:
if (result := some_function()) and result.is_valid():
print(result)
Kode tersebut bisa menjadi lebih efisien karena some_function() hanya dipanggil sekali.
Namun jika penggunaan Walrus Operator membuat alur kode sulit dipahami, assignment biasa mungkin lebih baik:
result = some_function()
if result and result.is_valid():
print(result)
Dalam clean code, keterbacaan tetap menjadi pertimbangan utama.
Tips Mempelajari Fitur Baru Python
Python terus berkembang dan menambahkan fitur baru dari waktu ke waktu.
Ketika mempelajari fitur baru, biasakan untuk:
- Mengetahui versi Python ketika fitur tersebut diperkenalkan.
- Membaca dokumentasi resmi Python.
- Memahami masalah yang ingin diselesaikan oleh fitur tersebut.
- Mencoba contoh sederhana.
- Membandingkan kode sebelum dan sesudah menggunakan fitur tersebut.
- Tidak menggunakan fitur baru hanya karena terlihat lebih singkat.
Walrus Operator, misalnya, diperkenalkan pada Python 3.8 dan dirancang untuk memungkinkan assignment dilakukan sebagai bagian dari expression.
Ringkasan
Walrus Operator menggunakan simbol:
:=
Fungsinya adalah melakukan assignment sekaligus menghasilkan nilai dalam sebuah expression.
Contoh paling sederhana:
if (n := len("Hello World")) > 5:
print(n)
Tanpa Walrus Operator, assignment biasanya dilakukan terlebih dahulu:
n = len("Hello World")
if n > 5:
print(n)
Gunakan Walrus Operator ketika penggunaannya membuat kode lebih efisien dan tetap mudah dibaca. Jika justru membuat kode menjadi membingungkan, gunakan assignment biasa.