Fungsi Python lambda dengan Contoh Praktis
Diterbitkan: 2021-06-21Fungsi lambda python adalah fungsi-fungsi yang kecil dan didefinisikan tanpa nama. Dalam python, kata kunci 'def' digunakan untuk mendefinisikan suatu fungsi. Namun, dalam kasus fungsi anonim, kata kunci 'lambda' digunakan untuk mendefinisikan fungsi tersebut. Oleh karena itu, nama “fungsi lambda. Mungkin ada nama atau tidak ditugaskan ke fungsi.
Dibandingkan dengan fungsi reguler di python, fungsi lambda lebih pendek.
fungsi lambda telah ditambahkan ke sintaks bahasa pemrograman seperti Python, Java, C++, C#, dll. dalam sintaksnya. Sementara itu digunakan sebagai konsep inti dalam Bahasa ML atau LISP.
Artikel ini akan fokus pada konsep fungsi python lambda dan penggunaannya.
Berdasarkan jenis bahasa pemrograman, fungsi lambda dapat digunakan secara bergantian dengan istilah berikut:
- Fungsi anonim
- fungsi lambda
- ekspresi lambda
- Abstraksi lambda
- bentuk lambda
- Fungsi literal
Daftar isi
Kalkulus Lambda
Penghitungan lambda adalah model komputasi yang menjadi dasar pembuatan ekspresi lambda. Kalkulus Lambda didasarkan pada abstraksi murni dan diformalkan oleh Gereja Alonzo. Juga dikenal sebagai abstraksi lambda, mengacu pada model asli yang dibuat oleh Gereja Alonzo.
Perhitungan apa pun dapat dikodekan oleh konsep ini.
Sintaks fungsi lambda:
Sintaks berikut digunakan saat menggunakan fungsi lambda di python.
argumen lambda: ekspresi
Mungkin ada sejumlah argumen dalam fungsi lambda di python . Tetapi fungsi hanya dapat memiliki satu ekspresi. Ekspresi ini pertama dievaluasi dan kemudian dikembalikan. Penggunaan fungsi lambda terletak di mana pun ada persyaratan dari objek fungsi.
Mempertimbangkan kasus di mana fungsi anonim dengan dua argumen didefinisikan dengan lambda tetapi tidak terikat pada variabel apa pun:
lambda x, y: x + y
Di sini, dua argumen diambil oleh fungsi dan jumlahnya dikembalikan.
Ada beberapa karakteristik yang ditunjukkan oleh fungsi lambda:
- Tidak boleh ada pernyataan apa pun di badan fungsi lambda tetapi hanya boleh berisi ekspresi.
- Kode eksekusi hanya satu baris.
- Jenis anotasi tidak didukung oleh fungsi lambda di python .
- Panggilan langsung diperbolehkan.
Pernyataan tidak dapat digunakan
Seperti yang disebutkan, tidak boleh ada pernyataan saat mendefinisikan fungsi lambda. Jika pengguna menggunakan pernyataan seperti lulus, kembali, naikkan, atau tegaskan, akan ada pengecualian SyntaxError. Hasil eksepsi dapat ditunjukkan melalui kode di bawah ini
Sumber
Pada kode di atas, kesalahan sintaks terjadi saat kode diurai yang berisi pernyataan tegas di badan fungsi lambda.
fungsi lambda hanya berisi satu ekspresi
Berbeda dengan semua fungsi normal standar di python, fungsi lambda di python hanya dapat berisi satu ekspresi. Tubuh fungsi lambda dapat memiliki ekspresi yang tersebar melalui penggunaan beberapa baris dengan tanda kurung. Namun, itu masih tetap sebagai ekspresi tunggal.
Sumber
String “ganjil” dikembalikan ketika ada argumen “ganjil” sedangkan string “genap” dikembalikan ketika ada argumen “genap”. Dua baris digunakan dalam kode di atas karena berada di dalam tanda kurung. Tapi itu tetap sebagai ekspresi tunggal.
Ketik anotasi
Dengan tersedianya "type hinting" di python, fungsi normal sekarang lebih disukai daripada fungsi lambda di python. Dengan tersedianya alat seperti mypy, pyre, dll. kesalahan ketik dapat ditangkap dengan full_name(). Kesalahan sintaks yang terkait dengan fungsi lambda dimunculkan selama waktu berjalan.
Eksekusi Fungsi Segera Dipanggil (IIFE)
Fitur ini tidak dapat digunakan di luar juru bahasa python. Definisi ekspresi lambda di python dapat diteruskan ke fungsi tingkat tinggi seperti map(), dll.
Argumen dalam fungsi lambda
Berbagai cara didukung dalam ekspresi python lambda untuk meneruskan argumen seperti:
- Argumen posisi
- Argumen bernama juga dikenal sebagai argumen kata kunci
- Daftar variabel argumen yang juga disebut sebagai varargs.
- Daftar variabel argumen kata kunci
- Argumen dengan hanya kata kunci.
Dekorator dalam Ekspresi Python Lambda
Dekorator dapat didefinisikan sebagai implementasi pola yang memungkinkan penambahan perilaku ke kelas atau fungsi. Sintaks @decorator digunakan sebagai awalan ke fungsi untuk mengekspresikan dekorator dengan python
Hanya dengan argumen 'Python', fungsi- dekorasi() dicetak. Perilaku tambahan yang dicetak adalah 'Memanggil fungsi 'dekorasi_fungsi'.
Python memungkinkan penambahan dekorator ke fungsi lambda, meskipun penggunaan sintaks @decorator tidak diperlukan. Dekorator bertindak sebagai fungsi yang memanggil fungsi lambda.
<lambda> muncul di mana fungsi lambda diidentifikasi. Sedangkan pada kasus fungsi normal yaitu add_two, diidentifikasi dengan jelas.
Untuk keperluan debugging, fungsi lambda dapat didekorasi dengan cara ini.
Penutup
Penutupan() dalam python didefinisikan sebagai fungsi di mana variabel bebas kecuali parameter yang digunakan dalam fungsi terikat pada nilai tertentu yang ditentukan dalam lingkup fungsi. Kita bisa memanggil penutupan dari mana saja. Fungsi Lambda di python dapat bertindak sebagai penutup dengan cara fungsi normal bertindak sebagai penutup.
Penggunaan fungsi lambda
- Kapan pun kita perlu menggunakan fungsi untuk waktu yang lebih singkat, fungsi lambda digunakan dalam kasus itu.
- Untuk meneruskan fungsi ke fungsi fungsi tingkat tinggi, fungsi lambda diterapkan. Fungsi dilewatkan sebagai argumen ke fungsi tingkat tinggi tersebut.
- Fungsi lambda di python dapat digunakan dengan fungsi bawaan lainnya seperti map(), dll.
Menguji fungsi lambda
Melalui penggunaan modul doctest dan unittest, fungsi lambda di python dapat diuji:
- Modul unittest menguji fungsi lambda seperti fungsi biasa.
- Dalam kasus modul doctest, kode python diekstraksi dari docstring , untuk pelaksanaan tes. Sintaks fungsi lambda tidak mengizinkan docstring . Namun, sebuah string dapat ditetapkan ke elemen _doc_ dari lambda yang diberi nama.
Contoh Fungsi Python Lambda
Dalam kode di bawah ini, fungsi dengan nama "identitas" didefinisikan di mana argumen dikembalikan. Ini didefinisikan sebagai fungsi standar python melalui penggunaan kata kunci "def".
>>> def identitas (x);
….. kembali x
Di sini, x diambil sebagai argumen oleh fungsi "identitas" dan saat dipanggil ia mengembalikan argumen.
Menulis kode yang sama menggunakan lambda akan menjadi:
lambda x: x
Ekspresi terdiri dari tiga bagian: Lambda sebagai kata kunci, x yang kemudian merupakan variabel terikat, dan X yang merupakan isi kode.
- Variabel terikat mengacu pada argumen yang diteruskan ke fungsi lambda. Namun, variabel bebas adalah variabel yang tidak terikat dan dapat dirujuk dalam badan ekspresi. Konstanta dapat berupa variabel bebas atau variabel yang didefinisikan dalam ruang lingkup fungsi.
Ungkapan di atas dapat dijabarkan sebagai
>>> lambda x: x + 1
Di sini, fungsi menambahkan 1 ke argumen. Fungsi dapat ditambahkan ke argumen sambil mengelilingi kedua fungsi bersama dengan argumen melalui penggunaan tanda kurung.
>>>(lambda x: x + 1)(2)
3
Untuk menghitung nilai dalam ekspresi, strategi pengurangan diterapkan. Seperti, pada contoh di atas, variabel terikat “x” dapat diganti dengan argumen 2.
(lambda x: x + 1 )(2) = Lambda 2: 2 + 1
= 2 + 1
= 3
Fungsi lambda menjadi ekspresi, penamaan dapat dilakukan dan kode di atas dapat ditulis ulang sebagai
>>> add_one = Lambda x : x + 1
>>> add_one(2)
3
Ini setara dengan menulis:
def add_one(x):
kembali x + 1
Argumen tunggal diambil oleh fungsi lambda. Juga, saat mendefinisikan fungsi lambda di python tidak ada tanda kurung di sekitar fungsi.
Untuk meneruskan lebih dari satu argumen ke fungsi lambda python , argumen dicantumkan dan dipisahkan melalui penggunaan koma(). Seharusnya tidak ada tanda kurung saat mendaftar argumen. Contoh fungsi multi-argumen ditunjukkan di bawah ini:
Di sini, dua argumen diambil oleh fungsi lambda di bawah full_name. String dikembalikan oleh fungsi yang menginterpolasi parameter pertama dan terakhir . Kode menunjukkan bahwa saat mendefinisikan fungsi lambda, tidak ada penggunaan tanda kurung. Pemanggilan fungsi lambda mengikuti cara yang sama seperti fungsi standar di python, yaitu menggunakan tanda kurung yang mengelilingi argumen.
Python fungsi lambda dengan filter()
Di python, fungsi filter() , menerima argumen sebagai daftar dan fungsi. Melalui item daftar, fungsi dapat dipanggil yang mengembalikan daftar item baru. Fungsi untuk daftar yang baru dibuat ini dievaluasi ke True .
Contoh fungsi filter() ditunjukkan di bawah ini yang digunakan untuk memfilter angka genap yang terdapat dalam daftar.
Sumber
Output yang dihasilkan oleh program adalah daftar baru: [4, 6, 8, 12].
Fungsi lambda python dengan peta ()
Daftar dan fungsi diambil sebagai argumen dalam fungsi python map(). Semua item yang terdapat dalam daftar memanggil fungsi yang mengembalikan daftar yang baru dibuat dengan item yang dikembalikan oleh fungsi.
Kesimpulan
Fungsi lambda python adalah fungsi yang berjajar tunggal dan dideklarasikan tanpa nama, yaitu fungsi anonim. Beberapa jumlah argumen dapat diteruskan ke fungsi lambda yang hanya dapat memiliki satu ekspresi. Terkadang, fungsi lambda dapat diteruskan ke fungsi lain sebagai argumen. Fungsi ketika didefinisikan dengan kata kunci 'def' di python dapat berperilaku sebagai fungsi biasa.
Oleh karena itu, artikel ini menjelaskan konsep fungsi lambda di python, aplikasinya dengan fungsi lain dan juga beberapa contoh. Jika Anda lebih tertarik untuk mendapatkan keahlian dalam bahasa pemrograman dan menguasai keterampilan pengkodean Anda, Anda dapat memeriksa kursus “ Program PG Eksekutif dalam Ilmu Data ” yang ditawarkan oleh upGrad . Ini dirancang khusus untuk semua profesional tingkat pemula dalam usia 21 hingga 45 tahun yang ingin mencapai keterampilan pengkodean mereka dalam ilmu data. Jika Anda bersedia mengambil langkah menuju impian Anda, majulah dan lihat manfaat dari kursus ini. Dengan proyek industri langsung, kursus yang disediakan oleh IIIT-B, dirancang untuk memenuhi kebutuhan Anda dan mempersiapkan Anda untuk industri teratas yang akan datang.
Apa perbedaan antara fungsi normal dan fungsi lambda?
Kita tahu bahwa fungsi dalam Python didefinisikan menggunakan kata kunci def. Demikian pula, fungsi lambda didefinisikan menggunakan kata kunci lambda. Pertimbangkan contoh di bawah ini untuk memahami secara mendalam perbedaan antara keduanya:
# Fungsi normal def sq(x): return x*x # Lambda function lambda_sq = lambda x: x*x # Memanggil fungsi normal # Didefinisikan fungsi print(sq(10)) # menggunakan fungsi lambda print(lambda_sq(10)) }
Contoh di atas mengilustrasikan 2 fungsi menghitung kuadrat suatu bilangan. Tanpa lambda, kita harus membuat fungsi sq(x), dan kemudian mengembalikan persegi. Di sisi lain, dengan lambda, seluruh fungsi telah direbus menjadi satu baris. Lambda tidak memerlukan pernyataan pengembalian.