15%

Apa itu Fungsi Anonim di Python: Lambda

12-May-2024

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, pernyataan def 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 body def, Anda cukup mengetikkan hasilnya sebagai ekspresi tanpa perlu kata return secara eksplisit. Karena keterbatasan ini, lambda kurang fleksibel dibanding def. Logika yang rumit tidak bisa dimasukkan ke dalam lambda karena absennya pernyataan seperti if. Ini disengaja untuk menjaga keterbacaan kode, lambda ditujukan untuk fungsi sederhana, sedangkan def 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 kunci lambda 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 nilai x 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 fungsi kuadrat dan meneruskan argumen 5. Fungsi ini menghitung kuadrat dari 5 (yaitu, 5 * 5) dan menyimpan hasilnya dalam variabel hasil.
  • 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:

  1. Mendefinisikan Data:
    data = ["apel", "pisang", "jeruk", "anggur"]: Baris ini membuat daftar bernama data yang berisi nama-nama buah.

  2. Pengurutan Default:
    data.sort(): Baris ini mengurutkan daftar data secara alfabetis menggunakan fungsi sort() bawaan. Hasilnya, daftar diurutkan berdasarkan urutan huruf dalam setiap nama buah.

  3. Pengurutan Kustom dengan Lambda:
    data.sort(key=lambda x: len(x)): Baris ini mengurutkan daftar data berdasarkan panjang stringnya menggunakan fungsi sort() dan lambda. Lambda di sini berperan sebagai "kunci pengurutan". Fungsi lambda lambda x: len(x) mengembalikan panjang string x, di mana x adalah setiap elemen dalam daftar data. Fungsi sort() 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 dalam sort() 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.

Topik : python
Similar Posts

Komentar (0)

Tinggalkan Komentar