Python tidak hanya menyediakan pernyataan def
untuk membuat fungsi, tapi juga menawarkan bentuk ekspresi yang menghasilkan objek fungsi yang disebut sebagai lambda.
Lambda di Python adalah ekspresi untuk membuat fungsi anonim, singkatnya fungsi tanpa nama. Berbeda dengan def
yang menghasilkan fungsi terdefinisi, lambda justru mengembalikan fungsi itu sendiri. Dengan lambda, Anda dapat menulis fungsi "inline" langsung di tempat penggunaannya.
Sebelum melanjutkan membaca disarankan memahami apa itu def di Python.
Katakan Anda butuh fungsi callback singkat untuk operasi seperti sort()
, namun Anda tak ingin repot-repot menulis fungsi terpisah satu baris menggunakan pernyataan def
. Di sinilah lambda berperan, ia menawarkan jalan pintas untuk menulis fungsi "secara inline".
Sintaks Dasar Lambda
lambda arguments: expression
Perlu dicatat beberapa hal penting:
- Lambda adalah ekspresi, bukan pernyataan. Ini memungkinkannya ditempatkan di lokasi yang tidak bisa digunakan
def
, seperti di dalam literal list atau argumen pemanggilan fungsi. Sebagai ekspresi, lambda mengembalikan nilai (fungsi baru) yang secara opsional bisa diberi nama. Sebaliknya, pernyataandef
selalu menetapkan fungsi baru ke nama di header, alih-alih mengembalikannya sebagai hasil. - Lambda hanya berisi satu ekspresi, bukan blok pernyataan. Mirip dengan pernyataan
return
di bodydef
, Anda cukup mengetikkan hasilnya sebagai ekspresi tanpa perlu katareturn
secara eksplisit. Karena keterbatasan ini, lambda kurang fleksibel dibandingdef
. Logika yang rumit tidak bisa dimasukkan ke dalam lambda karena absennya pernyataan sepertiif
. Ini disengaja untuk menjaga keterbacaan kode, lambda ditujukan untuk fungsi sederhana, sedangkandef
menangani tugas yang lebih kompleks.
Contoh Sederhana Lambda
kuadrat = lambda x: x * x # Fungsi untuk menghitung kuadrat hasil = kuadrat(5) print(hasil) # Output: 25
Bagian ini mendefinisikan fungsi anonim bernama kuadrat
. Fungsi ini tidak menggunakan pernyataan def
tradisional, melainkan menggunakan ekspresi lambda.
lambda
: Kata kuncilambda
menandakan awal dari definisi fungsi anonim.x
: Ini adalah parameter formal fungsi, yang mewakili nilai yang akan dioperasikan oleh fungsi.x * x
: Ini adalah ekspresi badan fungsi. Dalam kasus ini, ekspresi menghitung kuadrat dari nilaix
dengan mengalikannya dengan dirinya sendiri.- Fungsi lambda hanya dapat memiliki satu ekspresi body.
- Fungsi lambda tidak memiliki nama secara default, namun Anda dapat menugaskannya seperti
kuadrat
dalam contoh ini. hasil = kuadrat(5)
Baris ini memanggil fungsikuadrat
dan meneruskan argumen5
. Fungsi ini menghitung kuadrat dari5
(yaitu, 5 * 5) dan menyimpan hasilnya dalam variabelhasil
.print(hasil)
Terakhir, baris ini mencetak nilai variabel hasil
ke konsol, yang dalam hal ini adalah 25 (hasil kuadrat dari 5).
Contoh Mengurutkan Data dengan Fungsi Lambda
Python menyediakan fungsi sort()
bawaan yang memungkinkan Anda mengurutkan data dengan mudah. Fungsi ini sangat fleksibel dan dapat digunakan untuk mengurutkan berbagai jenis data, termasuk list, string, dan bahkan objek kustom.
Menariknya, sort()
dapat dipadukan dengan fungsi lambda untuk mencapai pengurutan berdasarkan kriteria yang lebih kompleks. Mari kita lihat cara kerjanya dengan contoh sederhana.
data = ["apel", "pisang", "jeruk", "anggur"] # Urutkan data secara alfabetis (default) data.sort() print(data) # Output: ['anggur', 'apel', 'jeruk', 'pisang'] # Urutkan data berdasarkan panjang string data.sort(key=lambda x: len(x)) print(data) # Output: ['apel', 'jeruk', 'pisang', 'anggur']
Penjelasan:
-
Mendefinisikan Data:
data = ["apel", "pisang", "jeruk", "anggur"]
: Baris ini membuat daftar bernamadata
yang berisi nama-nama buah. -
Pengurutan Default:
data.sort()
: Baris ini mengurutkan daftardata
secara alfabetis menggunakan fungsisort()
bawaan. Hasilnya, daftar diurutkan berdasarkan urutan huruf dalam setiap nama buah. -
Pengurutan Kustom dengan Lambda:
data.sort(key=lambda x: len(x))
: Baris ini mengurutkan daftardata
berdasarkan panjang stringnya menggunakan fungsisort()
dan lambda. Lambda di sini berperan sebagai "kunci pengurutan". Fungsi lambdalambda x: len(x)
mengembalikan panjang stringx
, di manax
adalah setiap elemen dalam daftardata
. Fungsisort()
kemudian mengurutkan daftar berdasarkan nilai yang dikembalikan oleh lambda, yaitu panjang string. Hasilnya, daftar diurutkan dari string terpendek hingga terpanjang.
Poin Penting:
- Fungsi
sort()
dapat digunakan untuk mengurutkan berbagai jenis data, asalkan data tersebut dapat dibandingkan. - Parameter
key
dalamsort()
memungkinkan Anda menentukan kriteria pengurutan kustom menggunakan fungsi lambda. - Fungsi lambda memungkinkan Anda mendefinisikan logika pengurutan yang kompleks secara ringkas dan mudah dibaca.
Kenapa Menggunakan Lambda?
Singkatnya, lambda berguna sebagai jalan pintas untuk fungsi yang memungkinkan Anda menyematkan definisi fungsi di dalam kode yang menggunakannya. Penggunaan lambda sepenuhnya opsional (Anda selalu bisa menggunakan def
), tetapi mereka cenderung menjadi konstruksi kode yang lebih sederhana dalam skenario di mana Anda hanya perlu menyematkan potongan kecil kode yang dapat dieksekusi.
Salah satu penggunaan umum lambda adalah sebagai callback handler. Callback handler sering kali ditulis sebagai ekspresi lambda inline yang disematkan langsung dalam daftar argumen panggilan registrasi, alih-alih didefinisikan dengan def
di tempat lain dalam file dan direferensikan dengan nama.
Ekspresi lambda paling bermanfaat sebagai jalan pintas untuk def
ketika Anda perlu memasukkan potongan kecil kode yang dapat dieksekusi ke tempat yang secara sintaks tidak mengizinkan pernyataan. Misalnya, kode berikut ini membangun daftar berisi tiga fungsi dengan menyematkan ekspresi lambda di dalam literal list. Penggunaan def
tidak akan berfungsi di dalam literal list seperti ini karena def
adalah pernyataan, bukan ekspresi.
fungsi_list = [lambda x: x * 2, lambda x: x**3, lambda x: x + 10] for fungsi in fungsi_list: angka = int(input("Masukkan angka: ")) hasil = fungsi(angka) print(f"Hasil dari fungsi: {hasil}")
Output:
Masukkan angka: 5 Hasil dari fungsi: 10 Masukkan angka: 3 Hasil dari fungsi: 27 Masukkan angka: -2 Hasil dari fungsi: 8
Lambda di Python menawarkan cara yang ringkas dan kuat untuk mendefinisikan fungsi anonim. Dengan memahami sintaks dan penggunaannya, Anda dapat memanfaatkan lambda untuk membuat kode Anda lebih bersih dan lebih efisien.
Meskipun terbatas pada ekspresi tunggal, lambda sangat berguna untuk operasi sederhana yang tidak memerlukan blok pernyataan penuh yang ditawarkan oleh def
. Penggunaannya dalam callback, operasi list comprehension, dan situasi lainnya menunjukkan fleksibilitas dan kekuatan lambda dalam pemrograman Python.