Saya mencoba mencari tahu Python lambdas. Apakah lambda salah satu item bahasa "menarik" yang dalam kehidupan nyata harus dilupakan?
Saya yakin ada beberapa kasus tepi di mana mungkin diperlukan, tetapi mengingat ketidakjelasan itu, potensi itu didefinisikan ulang dalam rilis mendatang (asumsi saya berdasarkan berbagai definisi itu) dan kejelasan pengkodean yang dikurangi - jika dihindari?
Ini mengingatkan saya pada overflow (buffer overflow) dari tipe C - menunjuk ke variabel teratas dan overloading untuk mengatur nilai field lainnya. Rasanya seperti semacam kecakapan memainkan pertunjukan teknisi tapi pemeliharaan mimpi buruk coder.
Jawaban:
Apakah Anda berbicara tentang fungsi lambda ? Suka
Hal-hal itu sebenarnya cukup bermanfaat. Python mendukung gaya pemrograman yang disebut pemrograman fungsional di mana Anda dapat meneruskan fungsi ke fungsi lain untuk melakukan sesuatu. Contoh:
set
mult3
ke[3, 6, 9]
, elemen-elemen dari daftar asli yang merupakan kelipatan dari 3. Ini lebih pendek (dan, orang bisa berpendapat, lebih jelas) daripadaTentu saja, dalam kasus khusus ini, Anda dapat melakukan hal yang sama dengan pemahaman daftar:
(atau bahkan sama
range(3,10,3)
), tetapi ada banyak kasus penggunaan lain yang lebih canggih di mana Anda tidak dapat menggunakan pemahaman daftar dan fungsi lambda mungkin merupakan cara terpendek untuk menulis sesuatu.Mengembalikan fungsi dari fungsi lain
Ini sering digunakan untuk membuat pembungkus fungsi, seperti dekorator Python.
Menggabungkan elemen dari urutan yang dapat diubah dengan
reduce()
Menyortir dengan tombol alternatif
Saya menggunakan fungsi lambda secara teratur. Butuh beberapa saat bagi saya untuk terbiasa dengan mereka, tetapi akhirnya saya mengerti bahwa mereka adalah bagian yang sangat berharga dari bahasa tersebut.
sumber
','.join(str(x) for x in [1,2,3,4,5,6,7,8,9])
lambda
fungsi dapat anonim (seperti yang ada dalam semua contoh Anda). Jika Anda menetapkanlambda
fungsi untuk apa-apa maka Anda melakukannya salah dan harus menggunakandef
sebaliknyalambda
hanyalah cara mewah untuk mengatakanfunction
. Selain namanya, tidak ada yang tidak jelas, mengintimidasi atau samar tentang hal itu. Ketika Anda membaca baris berikut, gantikanlambda
denganfunction
dalam pikiran Anda:Itu hanya mendefinisikan fungsi
x
. Beberapa bahasa lain, sepertiR
, mengatakannya secara eksplisit:Kamu melihat? Ini adalah salah satu hal paling alami untuk dilakukan dalam pemrograman.
sumber
lambda
sangat sederhana untuk dipahami. Terima kasih!lambda
denganfunction
di pikiran Anda dan tambahkanreturn
sebelum ekspresi terakhirtype(lambda x: 3)
.lambda
ekspresi dandef
pernyataan keduanya menghasilkanfunction
objek; hanya sintakslambda
ekspresi yang membatasi instance mana yang dapat dihasilkannya.lambda
ekspresi bukan berarti hasil darilambda
ekspresi bukanlah fungsi.Ringkasan dua baris:
lambda
Kata kunci Python : tidak perlu, terkadang berguna. Jika Anda menemukan diri Anda melakukan sesuatu yang jauh rumit dengannya, simpan dan tentukan fungsi yang sebenarnya.sumber
Lambda adalah bagian dari mekanisme abstraksi yang sangat penting yang berkaitan dengan fungsi-fungsi tingkat tinggi. Untuk mendapatkan pemahaman yang benar tentang nilainya, silakan lihat pelajaran berkualitas tinggi dari Abelson dan Sussman , dan baca buku SICP
Ini adalah masalah yang relevan dalam bisnis perangkat lunak modern, dan menjadi semakin populer.
sumber
lambda
fungsi s dan kelas satu. Python memiliki pernyataan yang sangat terbataslambda
, tetapi sepenuhnya fungsi kelas satu. Satu-satunya perbedaan yang dibuatnya adalah Anda harus memberi nama fungsi yang ingin Anda sampaikan.lambdas sangat berguna dalam pemrograman GUI. Misalnya, katakanlah Anda sedang membuat grup tombol dan Anda ingin menggunakan satu panggilan balik paramaterized daripada satu panggilan balik unik per tombol. Lambda memungkinkan Anda melakukannya dengan mudah:
(Catatan: meskipun pertanyaan ini khusus ditanyakan
lambda
, Anda juga dapat menggunakan functools.partial untuk mendapatkan jenis hasil yang sama)Alternatifnya adalah membuat panggilan balik terpisah untuk setiap tombol yang dapat menyebabkan kode digandakan.
sumber
value
ini didefinisikan dalam satu lingkaran; dalam contoh lain parameter selalu hanya memiliki satu nilai. Ketika Anda menambahkan sesuatu sepertiarg=value
, Anda melampirkan nilai saat ini ke callback. Tanpa itu, Anda mengikat referensi ke variabel dalam panggilan balik. Referensi akan selalu berisi nilai akhir variabel, karena panggilan balik terjadi beberapa saat setelah loop telah selesai berjalan.functools.partial()
yang memungkinkan Anda melakukan ini dengan sedikit cacat (dan tanpalambda
).partial(my_callback, value)
vslambda arg=value: my_callback(arg)
- lambda memiliki lebih banyak cruft (tugas untuk arg dan kemudian penggunaan) dan kurang jelas apa maksudnya (Anda bisa melakukan sesuatu yang agak berbeda di lambda). Impor tidak benar-benar masalah (Anda masih memiliki tumpukan dan itu sekali per file). Kode paling baik dinilai berdasarkan seberapa baik ia membaca, danpartial()
jauh lebih mudah dibaca daripada lambda.Saya ragu lambda akan pergi. Lihat posting Guido tentang akhirnya menyerah mencoba menghapusnya. Juga lihat garis besar konflik .
Anda dapat memeriksa posting ini untuk mengetahui lebih banyak tentang sejarah tentang kesepakatan di balik fitur fungsional Python: http://python-history.blogspot.com/2009/04/origins-of-pythons-functional-features.html
Dua sen saya sendiri: Jarang adalah nilai lambda sejauh kejelasannya. Secara umum ada solusi yang lebih jelas yang tidak termasuk lambda.
sumber
Dalam Python,
lambda
hanyalah cara mendefinisikan fungsi inline,dan..
..adalah persis sama.
Tidak ada yang dapat Anda lakukan dengan lambda yang tidak dapat Anda lakukan dengan fungsi biasa — dalam fungsi Python adalah objek seperti yang lainnya, dan lambdas hanya mendefinisikan fungsi:
Jujur saya pikir itu
lambda
kata kunci itu berlebihan di Python — saya tidak pernah memiliki kebutuhan untuk menggunakannya (atau melihat yang digunakan di mana fungsi biasa, pemahaman daftar atau salah satu dari banyak fungsi builtin bisa lebih baik digunakan sebagai gantinya)Untuk contoh yang benar-benar acak, dari artikel "lambda Python rusak!" :
Saya berpendapat, bahkan jika itu berhasil, itu mengerikan dan "unpythonic", fungsi yang sama dapat ditulis dalam banyak cara lain, misalnya:
Ya, itu tidak sama, tetapi saya belum pernah melihat penyebab di mana menghasilkan sekelompok fungsi lambda dalam daftar telah diperlukan. Mungkin masuk akal dalam bahasa lain, tetapi Python bukan Haskell (atau Lisp, atau ...)
Edit:
Ada beberapa kasus di mana lambda berguna, misalnya sering nyaman ketika menghubungkan sinyal dalam aplikasi PyQt, seperti ini:
Melakukan sesuatu
w.textChanged.connect(dothing)
akan memanggildothing
metode denganevent
argumen tambahan dan menyebabkan kesalahan. Menggunakan lambda berarti kita dapat dengan mudah menjatuhkan argumen tanpa harus mendefinisikan fungsi pembungkus.sumber
a
yang Anda tetapkan tidak persis sama. :) Mereka berbeda berdasarkan__name__
bidang setidaknya ...Saya menemukan lambda berguna untuk daftar fungsi yang melakukan hal yang sama, tetapi untuk keadaan yang berbeda.
Seperti aturan jamak Mozilla :
Jika Anda harus mendefinisikan fungsi untuk semua yang Anda akan menjadi gila pada akhir itu.
Juga, itu tidak akan bagus dengan nama fungsi seperti
plural_rule_1
,plural_rule_2
, dll Dan Anda akan perlu untukeval()
itu ketika Anda tergantung pada fungsi variabel id.sumber
Cukup banyak hal yang dapat Anda lakukan
lambda
dapat dilakukan dengan fungsi atau daftar dan ekspresi generator.Akibatnya, untuk sebagian besar Anda harus hanya salah satu dari mereka yang pada dasarnya situasi apa pun (kecuali mungkin untuk kode awal yang ditulis dalam interpreter interaktif).
sumber
Saya telah menggunakan Python selama beberapa tahun dan saya tidak pernah menjalankan kasus dimana saya membutuhkan lambda. Sungguh, seperti yang dinyatakan dalam tutorial , itu hanya untuk gula sintaksis.
sumber
Saya tidak dapat berbicara dengan implementasi lambda dari python, tetapi secara umum fungsi lambda sangat berguna. Mereka adalah teknik inti (bahkan mungkin THE teknik) pemrograman fungsional, dan mereka juga sangat berguna dalam program berorientasi objek. Untuk jenis masalah tertentu, mereka adalah solusi terbaik, jadi tentunya tidak boleh dilupakan!
Saya sarankan Anda membaca tentang penutupan dan fungsi peta (yang menghubungkan ke python docs, tetapi ada di hampir setiap bahasa yang mendukung konstruksi fungsional) untuk melihat mengapa itu berguna.
sumber
Fungsi Lambda ini adalah cara non-birokratis untuk membuat fungsi.
Itu dia. Sebagai contoh, mari kita anggap Anda memiliki fungsi utama dan perlu menguadratkan nilai. Mari kita lihat cara tradisional dan cara lambda untuk melakukan ini:
Cara tradisional:
Cara lambda:
Lihat perbedaannya?
Fungsi Lambda berjalan sangat baik dengan daftar, seperti daftar pemahaman atau peta. Bahkan, pemahaman daftar itu adalah cara "pythonic" untuk mengekspresikan diri menggunakan lambda. Ex:
Mari kita lihat apa arti setiap elemen dari sintaks:
Itu nyaman, eh? Menciptakan fungsi seperti ini. Mari kita menulis ulang menggunakan lambda:
Sekarang mari kita gunakan peta, yang merupakan hal yang sama, tetapi lebih netral bahasa. Peta membutuhkan 2 argumen:
(i) satu fungsi
(ii) iterable
Dan memberi Anda daftar di mana setiap elemen itu fungsi yang diterapkan untuk setiap elemen iterable.
Jadi, dengan menggunakan peta kita akan memiliki:
Jika Anda menguasai lambda dan pemetaan, Anda akan memiliki kekuatan besar untuk memanipulasi data dan secara ringkas. Fungsi Lambda tidak jelas atau menghilangkan kejelasan kode. Jangan membingungkan sesuatu yang keras dengan sesuatu yang baru. Setelah Anda mulai menggunakannya, Anda akan merasa sangat jelas.
sumber
Salah satu hal yang menyenangkan tentang
lambda
itu menurut pendapat saya kurang penting adalah cara menunda evaluasi untuk formulir sederhana sampai nilainya diperlukan. Biarkan saya jelaskan.Banyak rutin perpustakaan diimplementasikan sehingga memungkinkan parameter tertentu menjadi callable (di antaranya lambda adalah satu). Idenya adalah bahwa nilai aktual akan dihitung hanya pada saat itu akan digunakan (bukan ketika itu disebut). Contoh (dibuat-buat) mungkin bisa membantu menggambarkan hal tersebut. Misalkan Anda memiliki rutinitas yang akan melakukan log cap waktu tertentu. Anda ingin rutin menggunakan waktu saat ini minus 30 menit. Anda akan menyebutnya seperti itu
Sekarang anggap fungsi aktual akan dipanggil hanya ketika peristiwa tertentu terjadi dan Anda ingin cap waktu dihitung hanya pada waktu itu. Anda dapat melakukan ini seperti itu
Dengan asumsi
log_timestamp
kaleng menangani callable seperti ini, itu akan mengevaluasi ini ketika dibutuhkan dan Anda akan mendapatkan cap waktu pada waktu itu.Tentu saja ada cara alternatif untuk melakukan ini (menggunakan
operator
modul misalnya) tapi saya harap saya telah menyampaikan intinya.Perbarui : Di Sini adalah contoh dunia nyata yang sedikit lebih konkret.
Pembaruan 2 : Saya pikir ini adalah contoh dari apa yang disebut thunk .
sumber
Seperti yang dinyatakan di atas, operator lambda di Python mendefinisikan fungsi anonim, dan dalam fungsi Python adalah penutupan. Penting untuk tidak membingungkan konsep penutupan dengan lambda operator, yang hanya metadon sintaksis bagi mereka.
Ketika saya mulai dengan Python beberapa tahun yang lalu, saya banyak menggunakan lambdas, berpikir mereka keren, bersama dengan daftar pemahaman. Namun, saya menulis dan harus memelihara situs web besar yang ditulis dengan Python, dengan urutan beberapa ribu poin fungsi. Saya telah belajar dari pengalaman bahwa lambdas mungkin baik-baik saja untuk membuat prototipe dengan, tetapi tidak menawarkan apa pun atas fungsi inline (bernama penutupan) kecuali untuk menyimpan beberapa kunci-stoke, atau kadang-kadang tidak.
Pada dasarnya ini bermuara pada beberapa poin:
Itu alasan yang cukup untuk mengumpulkan mereka dan mengubahnya menjadi penutupan bernama. Namun, saya menyimpan dua dendam lain terhadap penutupan anonim.
Dendam pertama hanyalah bahwa mereka hanyalah kata kunci lain yang tidak perlu mengacaukan bahasa.
Dendam kedua lebih dalam dan pada tingkat paradigma, yaitu saya tidak suka bahwa mereka mempromosikan gaya pemrograman fungsional, karena gaya itu kurang fleksibel daripada pesan yang lewat, berorientasi objek atau gaya prosedural, karena kalkulus lambda tidak Turing- selesai (untungnya dengan Python, kita masih bisa keluar dari pembatasan itu bahkan di dalam lambda). Alasan saya merasa lambdas mempromosikan gaya ini adalah:
Ada pengembalian tersirat, yaitu mereka sepertinya 'harus' menjadi fungsi.
Mereka adalah alternatif mekanisme penyembunyian negara ke mekanisme lain, lebih eksplisit, lebih mudah dibaca, lebih dapat digunakan kembali dan lebih umum: metode.
Saya berusaha keras untuk menulis Python bebas lambda, dan menghapus lambdas saat dilihat. Saya pikir Python akan menjadi bahasa yang sedikit lebih baik tanpa lambda, tapi itu hanya pendapat saya.
sumber
Y = lambda f: (lambda x: x(x))(lambda y: f(lambda *args: y(y)(*args)))
Lambdas sebenarnya adalah konstruksi yang sangat kuat yang berasal dari ide-ide dalam pemrograman fungsional, dan itu adalah sesuatu yang tidak akan mudah direvisi, didefinisikan ulang atau dihapus dalam waktu dekat Python. Mereka membantu Anda menulis kode yang lebih kuat karena memungkinkan Anda untuk lulus fungsi sebagai parameter, sehingga gagasan fungsi sebagai warga negara kelas satu.
Lambdas memang cenderung membingungkan, tetapi begitu pemahaman yang kuat diperoleh, Anda dapat menulis kode elegan yang bersih seperti ini:
Baris kode di atas mengembalikan daftar kotak angka-angka dalam daftar. Tentu, Anda juga bisa melakukannya seperti:
Jelas kode sebelumnya lebih pendek, dan ini terutama benar jika Anda bermaksud untuk menggunakan fungsi peta (atau fungsi serupa lainnya yang mengambil fungsi sebagai parameter) hanya di satu tempat. Ini juga membuat kode lebih intuitif dan elegan.
Juga, seperti yang disebutkan @David Zaslavsky dalam jawabannya, pemahaman daftar tidak selalu merupakan jalan yang harus ditempuh terutama jika daftar Anda harus mendapatkan nilai dari beberapa cara matematika yang tidak jelas.
Dari sudut pandang yang lebih praktis, salah satu keuntungan terbesar lambda bagi saya baru-baru ini adalah dalam pemrograman GUI dan event-driven. Jika Anda melihat callback di Tkinter, yang mereka ambil sebagai argumen adalah peristiwa yang memicu mereka. Misalnya
Sekarang bagaimana jika Anda memiliki beberapa argumen untuk dilewati? Sesuatu yang sederhana seperti melewati 2 argumen untuk menyimpan koordinat klik-mouse. Anda dapat dengan mudah melakukannya seperti ini:
Sekarang Anda dapat berargumen bahwa ini dapat dilakukan dengan menggunakan variabel global, tetapi apakah Anda benar-benar ingin memukul kepala Anda khawatir tentang manajemen memori dan kebocoran terutama jika variabel global hanya akan digunakan di satu tempat tertentu? Itu hanya gaya pemrograman yang buruk.
Singkatnya, lambda itu luar biasa dan tidak boleh dianggap remeh. Python lambdas tidak sama dengan LISP lambdas (yang lebih kuat), tetapi Anda benar-benar dapat melakukan banyak hal ajaib dengan mereka.
sumber
main
dando_something_cool
? Apa yang terjadi padax
dany
dalam fungsi? Nilai yang diteruskan tampaknya akan segera ditimpa? Bagaimana fungsi tahu tentangevent
? Bisakah Anda menambahkan beberapa komentar / penjelasan? Terima kasihx
dany
sebagai argumen untukdo-something-cool
dan nilai-nilai mereka sedang diatur dalam fungsi untuk menggambarkan bagaimana Anda dapat menggunakan lambdas untuk melewati argumen di mana tidak ada yang diharapkan. Thewidget.bind
Fungsi mengharapkanevent
parameter yang mengidentifikasi peristiwa GUI pada itu widget tertentu. Saya merekomendasikan membaca model pemrograman Tkinter untuk kejelasan yang lebih besar.x,y
kemudian lakukanx=event.x
. Bukankah itu menimpa nilai yang Anda berikan? Dan bagaimana fungsinya mengetahui apaevent
itu? Saya tidak melihat di mana Anda meneruskannya ke fungsi. Atau itu metode? Anda juga diizinkan tanda minus dalam nama fungsi?x, y
, itu hanya contoh untuk tujuan ilustrasi. Saya mencoba menunjukkan kekuatan lambda, bukan Tkinter. :)event
? dalam hal itu, bukankah lambda Anda harus dibacalambda event: do_something_cool(event,x,y)
?Lambdas sangat terkait dengan gaya pemrograman fungsional secara umum. Gagasan bahwa Anda dapat memecahkan masalah dengan menerapkan fungsi ke beberapa data, dan menggabungkan hasilnya, adalah apa yang digunakan Google untuk mengimplementasikan sebagian besar algoritmanya.
Program yang ditulis dalam gaya pemrograman fungsional, mudah diparalelkan dan karenanya menjadi semakin penting dengan mesin multi-core modern. Jadi singkatnya, TIDAK Anda tidak boleh melupakan mereka.
sumber
Selamat pertama yang berhasil menemukan lambda. Menurut pendapat saya ini adalah konstruksi yang sangat kuat untuk bertindak. Tren akhir-akhir ini terhadap bahasa pemrograman fungsional jelas merupakan indikator bahwa hal itu tidak harus dihindari atau akan didefinisikan ulang dalam waktu dekat.
Anda hanya perlu berpikir sedikit berbeda. Saya yakin Anda akan segera menyukainya. Tapi hati-hati jika Anda hanya berurusan dengan python. Karena lambda bukan merupakan penutupan nyata, itu entah bagaimana "rusak": ular sanca lambda rusak
sumber
Perhatikan bahwa ini bukan suatu penghukuman terhadap apa pun. Setiap orang memiliki serangkaian hal berbeda yang tidak mudah datang.
Tidak.
Itu tidak jelas. 2 tim terakhir yang saya kerjakan, semua orang menggunakan fitur ini sepanjang waktu.
Saya telah melihat tidak ada proposal serius untuk mendefinisikannya kembali dengan Python, di luar memperbaiki semantik penutupan beberapa tahun yang lalu.
Tidak kalah jelas, jika Anda menggunakannya dengan benar. Sebaliknya, memiliki lebih banyak konstruksi bahasa yang tersedia meningkatkan kejelasan.
Lambda seperti buffer overflow? Wow. Saya tidak bisa membayangkan bagaimana Anda menggunakan lambda jika Anda pikir itu adalah "mimpi buruk pemeliharaan".
sumber
Saya menggunakan lambdas untuk menghindari duplikasi kode. Ini akan membuat fungsinya dengan mudah dipahami. Misalnya:
Saya menggantinya dengan temp lambda
sumber
Saya mulai membaca buku David Mertz hari ini 'Text Processing in Python.' Sementara ia memiliki deskripsi yang cukup singkat tentang Lambda, contoh-contoh dalam bab pertama dikombinasikan dengan penjelasan dalam Lampiran A membuat mereka melompat dari halaman untuk saya (akhirnya) dan tiba-tiba saya mengerti nilai mereka. Itu tidak berarti penjelasannya akan bekerja untuk Anda dan saya masih pada tahap penemuan jadi saya tidak akan mencoba untuk menambahkan tanggapan ini selain dari yang berikut: Saya baru di Python Saya baru di OOP Lambdas adalah perjuangan untuk saya Sekarang saya membaca Mertz, saya pikir saya mendapatkannya dan saya melihat mereka sangat berguna karena saya pikir mereka memungkinkan pendekatan yang lebih bersih untuk pemrograman.
Dia mereproduksi Zen Python, satu baris yang Sederhana lebih baik daripada kompleks. Sebagai programmer non-OOP membaca kode dengan lambdas (dan sampai minggu lalu daftar pemahaman) saya pikir- ini sederhana? . Saya akhirnya menyadari hari ini bahwa sebenarnya fitur-fitur ini membuat kode jauh lebih mudah dibaca, dan dapat dimengerti daripada alternatif-yang selalu merupakan semacam loop. Saya juga menyadari bahwa seperti laporan keuangan-Python tidak dirancang untuk pengguna pemula, melainkan dirancang untuk pengguna yang ingin mendapatkan pendidikan. Saya tidak percaya betapa kuatnya bahasa ini. Ketika saya sadar (akhirnya) tujuan dan nilai lambda saya ingin meringkas sekitar 30 program dan mulai memasukkan lambda di mana sesuai.
sumber
Kasus yang berguna untuk menggunakan lambdas adalah untuk meningkatkan keterbacaan pemahaman daftar panjang . Dalam contoh
loop_dic
ini singkat untuk kejelasan tetapi bayangkanloop_dic
sangat panjang. Jika Anda hanya akan menggunakan nilai polos yang mencakupi
alih-alih versi lambda dari nilai itu, Anda akan mendapatkanNameError
.Dari pada
sumber
Saya dapat memberikan contoh di mana saya benar-benar membutuhkan lambda. Saya membuat program grafis, di mana penggunaan klik kanan pada file dan menetapkan salah satu dari tiga opsi. Ternyata di Tkinter (program antarmuka GUI saya menulis ini), ketika seseorang menekan tombol, itu tidak dapat ditugaskan ke perintah yang mengambil argumen. Jadi jika saya memilih salah satu opsi dan ingin hasil dari pilihan saya adalah:
Maka bukan masalah besar. Tetapi bagaimana jika saya membutuhkan pilihan saya untuk memiliki detail tertentu. Sebagai contoh, jika saya memilih pilihan A, itu memanggil fungsi yang mengambil dalam beberapa argumen yang bergantung pada pilihan A, B atau C, TKinter tidak dapat mendukung ini. Lamda adalah satu-satunya pilihan untuk menyiasati ini ...
sumber
def foo...
dan kemudian diteruskan difoo
bukannyalambda
. Itu lebih banyak kode dan Anda harus datang dengan nama.Saya sering menggunakannya, terutama sebagai objek nol atau untuk sebagian mengikat parameter ke suatu fungsi.
Berikut ini contohnya:
untuk menerapkan pola objek nol:
untuk pengikatan parameter:
katakanlah saya memiliki API berikut
Lalu, ketika saya tidak ingin dengan cepat membuang data yang diterima ke file saya melakukan itu:
sumber
saya menggunakan
lambda
untuk membuat panggilan balik yang menyertakan parameter. Lebih bersih menulis lambda dalam satu baris daripada menulis metode untuk melakukan fungsi yang sama.Sebagai contoh:
sebagai lawan:
sumber
Saya pemula python, jadi untuk mendapatkan ide yang jelas tentang lambda saya membandingkannya dengan loop 'untuk'; dalam hal efisiensi. Berikut kodenya (python 2.7) -
sumber
timeit
modul, yang biasanya memberikan hasil yang lebih akurat daripada mengurangitime.time()
nilai.Lambda adalah pembangun prosedur. Anda dapat mensintesis program saat dijalankan, meskipun lambda Python tidak terlalu kuat. Perhatikan bahwa hanya sedikit orang yang mengerti pemrograman semacam itu.
sumber