Menguasai Fungsi Lambda Python: Contoh Praktis & Praktik Terbaik
Fungsi lambda, sering disebut fungsi anonim, memungkinkan Anda menulis rutinitas kecil yang digunakan sekali dalam satu baris. Mereka berguna dalam kode gaya fungsional, terutama saat digunakan dengan map, filter, dan reduce.
Apa Itu Fungsi Lambda?
Lambda adalah fungsi yang didefinisikan dengan kata kunci lambda alih-alih def. Ia menerima nol atau lebih parameter dan mengembalikan nilai dari satu ekspresi. Karena tubuhnya adalah ekspresi, lambda tidak dapat berisi pernyataan atau beberapa baris.
Setiap lambda memiliki tiga bagian penting:
- Kata kunci
lambda. - Satu atau lebih parameter (dipisahkan dengan koma).
- Satu ekspresi yang menghasilkan nilai pengembalian.
Misalnya, lambda x, y: x + y menambahkan dua angka. Meskipun anonim, lambda dapat ditugaskan ke variabel, diteruskan ke fungsi lain, atau dipanggil segera.
Cara Menulis Lambda
Sintaks formal:
lambda p1, p2, ... : expression
Perhatikan tidak ada kurung di sekitar parameter. Ekspresi dapat menggunakan operasi Python yang valid.
Contoh 1: Penjumlahan Sederhana
adder = lambda x, y: x + y print(adder(1, 2)) # → 3
Contoh 2: Memeriksa Objek Lambda
string = 'some kind of a useless lambda' print(lambda string: print(string)) # → <function <lambda> at 0x...>
Di sini, lambda tidak pernah dipanggil; print menampilkan objek fungsi yang dikembalikan oleh lambda.
Contoh 3: Lambda yang Dipanggil Segera (IIFE)
(lambda x: print(x))('IIFE in action') # → IIFE in action Mengapit definisi dalam kurung dan menambahkan kurung setelahnya memanggil lambda segera.
Contoh 4: Lambda vs Fungsi Reguler
# Fungsi reguler def printer(arg): return print(arg) # Lambda yang memanggil fungsi guru(lambda: printer('Lambda call')) # → Lambda call Kedua cuplikan menghasilkan output yang sama, tetapi versi lambda lebih ringkas ketika Anda hanya memerlukan pemanggilan satu kali.
Menggunakan Lambda dengan Fungsi Bawaan
Lambda muncul ketika diteruskan sebagai callback ke fungsi orde tinggi. Berikut adalah pola umum.
Lambda yang Dipanggil Segera (IIFE) dalam Python
(lambda x: x + x)(2) # → 4
Filter
Fungsi filter mempertahankan elemen yang memenuhi predikat.
sequences = [10, 2, 8, 7, 5, 4, 3, 11, 0, 1] filtered = filter(lambda x: x > 4, sequences) print(list(filtered)) # → [10, 8, 7, 5, 11]
Map
Fungsi map mengubah setiap elemen.
sequences = [10, 2, 8, 7, 5, 4, 3, 11, 0, 1] squared = map(lambda x: x * x, sequences) print(list(squared)) # → [100, 4, 64, 49, 25, 16, 9, 121, 0, 1]
Reduce
Gunakan reduce untuk mengakumulasi satu nilai dari urutan.
from functools import reduce sequences = [1, 2, 3, 4, 5] product = reduce(lambda x, y: x * y, sequences) print(product) # → 120
Kapan Menggunakan (dan Menghindari) Lambda
Lambda ideal untuk operasi satu kali yang ringkas dan muat dalam satu ekspresi. Mereka umum dalam konstruksi pemrograman fungsional seperti map dan filter.
Namun, hindari lambda yang terlalu kompleks dalam kode produksi. One-liner yang panjang dan tidak dapat dibaca dapat menghambat kemudahan pemeliharaan. Dalam kasus tersebut, fungsi bernama dengan docstring yang jelas lebih disukai.
Lambda vs Fungsi Reguler
| Fitur | Lambda | Fungsi Reguler |
| Sintaks | lambda x: x + x | def add(x): return x + x |
| Tubuh | Hanya satu ekspresi | Beberapa pernyataan diizinkan |
| Penamaan | Anonim (tidak ada pengidentifikasi) | Harus memiliki nama |
| Pengembalian | Implisit dari ekspresi | Eksplisit dengan return |
| Kasus penggunaan | Logika yang ringkas dan digunakan sekali | Logika yang dapat digunakan kembali dan kompleks |
Takeaway
- Gunakan lambda untuk fungsi satu ekspresi yang ringkas.
- Ubah fungsi bernama saat logika kompleks atau dapat digunakan kembali.
- Jaga keterbacaan kode; kesederhanaan lebih baik dari pada kecerdikan.