Artikel ini bagian dari seri Belajar Python Level Basic di hanifmu.com. Di artikel sebelumnya kita sudah membahas Scope Variabel. Sekarang kita pakai bentuk function yang lebih ringkas untuk tugas-tugas kecil.
Tidak semua function perlu nama dan beberapa baris. Untuk operasi sederhana yang dipakai sekali, Python menyediakan lambda.
Apa itu Lambda?
Lambda adalah function tanpa nama yang ditulis dalam satu baris. Bentuknya:
lambda parameter: ekspresi
Perhatikan bahwa tidak ada kata def, tidak ada return, dan hasilnya langsung berupa ekspresi:
kuadrat = lambda x: x * x
print(kuadrat(5)) # 25
Baris lambda x: x * x setara dengan:
def kuadrat(x):
return x * x
Lambda bisa punya beberapa parameter:
tambah = lambda a, b: a + b
print(tambah(3, 4)) # 7
Lambda vs Function Biasa
Keduanya sama-sama function. Bedanya ada di bentuk dan kegunaan:
| Aspek | def | lambda |
|---|---|---|
| Nama | Wajib | Tidak ada |
| Jumlah baris | Bisa banyak | Satu ekspresi |
return | Ditulis eksplisit | Otomatis |
| Docstring | Bisa | Tidak bisa |
| Kegunaan | Logika kompleks | Operasi singkat sekali pakai |
Karena lambda tidak punya nama dan hanya berisi satu ekspresi, ia kurang cocok untuk logika yang rumit. Kalau ekspresinya mulai panjang, function biasa lebih mudah dibaca.
Lambda dengan map()
map() menerapkan sebuah function ke setiap item dalam urutan:
angka = [1, 2, 3, 4, 5]
kuadrat = list(map(lambda x: x ** 2, angka))
print(kuadrat) # [1, 4, 9, 16, 25]
map() mengembalikan objek iterator, jadi bungkus dengan list() untuk melihat isinya.
Lambda dengan filter()
filter() menyaring item yang memenuhi kondisi:
angka = [1, 2, 3, 4, 5, 6, 7, 8]
genap = list(filter(lambda x: x % 2 == 0, angka))
print(genap) # [2, 4, 6, 8]
Function di dalam filter() harus mengembalikan True atau False. Item yang bernilai True saja yang lolos.
Lambda dengan sorted()
sorted() mengurutkan data, dan bisa menerima lambda sebagai penentu kunci pengurutan:
buah = ["mangga", "apel", "jeruk"]
urut = sorted(buah, key=lambda x: len(x))
print(urut) # ['apel', 'jeruk', 'mangga']
Di sini key menentukan bahwa pengurutan didasarkan pada panjang kata, bukan alfabet.
Contoh yang lebih berguna, mengurutkan data berdasarkan kolom tertentu:
siswa = [
("Budi", 85),
("Sari", 92),
("Anton", 78),
]
urut = sorted(siswa, key=lambda s: s[1], reverse=True)
for nama, nilai in urut:
print(f"{nama}: {nilai}")
Output:
Sari: 92
Budi: 85
Anton: 78
key=lambda s: s[1] berarti urutkan berdasarkan nilai (item indeks 1), dan reverse=True membuat urutannya dari besar ke kecil.
Kapan Memakai Lambda?
Lambda cocok saat:
- Function hanya dipakai sekali dan langsung diberikan sebagai argument.
- Operasinya sederhana, cukup satu ekspresi.
- Dipakai bersama
map(),filter(), atausorted().
Lambda sebaiknya dihindari saat:
- Logikanya butuh beberapa langkah atau kondisi bertingkat.
- Butuh docstring atau nama yang menjelaskan maksudnya.
- Function akan dipakai berulang di banyak tempat.
Ingat, di Python modern list comprehension sering lebih jelas daripada map() atau filter() dengan lambda:
# Dengan map dan lambda
kuadrat = list(map(lambda x: x ** 2, angka))
# Dengan list comprehension
kuadrat = [x ** 2 for x in angka]
Keduanya benar. Pilih yang paling mudah dibaca.
Contoh Program: Mengurutkan Data Penjualan
Mari urutkan produk berdasarkan total penjualan:
# urut_penjualan.py
penjualan = [
{"produk": "Apel", "terjual": 120, "harga": 15000},
{"produk": "Jeruk", "terjual": 200, "harga": 12000},
{"produk": "Mangga", "terjual": 80, "harga": 20000},
]
urut = sorted(
penjualan,
key=lambda p: p["terjual"] * p["harga"],
reverse=True,
)
for p in urut:
total = p["terjual"] * p["harga"]
print(f"{p['produk']}: Rp{total:,}")
Output:
Jeruk: Rp2,400,000
Apel: Rp1,800,000
Mangga: Rp1,600,000
Lambda di sini menghitung total penjualan sebagai dasar pengurutan, tanpa perlu membuat function terpisah.
Kesalahan Umum Pemula
- Menaruh statement di dalam lambda — lambda hanya boleh berisi ekspresi.
- Lupa bahwa
map()danfilter()mengembalikan iterator — bungkus denganlist(). - Memakai lambda untuk logika rumit — lebih baik pakai
def. - Menugaskan lambda ke variabel lalu memakainya berkali-kali — sebaiknya pakai
def. - Salah mengira lambda tidak punya parameter — lambda bisa punya berapa pun parameter.
Ringkasan
- Lambda adalah function tanpa nama yang ditulis dalam satu baris
- Bentuknya
lambda parameter: ekspresi, hasilnya otomatis dikembalikan - Lambda tidak punya nama dan docstring, cocok untuk tugas singkat
map()menerapkan function ke setiap item,filter()menyaring itemsorted()bisa memakai lambda sebagai penentu kunci pengurutan- Untuk logika rumit, function biasa dengan
deflebih jelas
Langkah Selanjutnya
Kamu sudah bisa membuat function dengan berbagai bentuk. Tapi program yang menerima input pengguna sering menemui data yang tidak sesuai harapan, misalnya angka yang tidak valid atau file yang tidak ada.
Artikel selanjutnya membahas Syntax Error vs Exception di Python, cara membaca pesan error dan mengenali jenis kesalahan yang umum.
