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:
squared = map(lambda x: x*x, [1, 2, 3, 4, 5])
Baris kode di atas mengembalikan daftar kotak angka-angka dalam daftar. Tentu, Anda juga bisa melakukannya seperti:
def square(x):
return x*x
squared = map(square, [1, 2, 3, 4, 5])
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
def define_bindings(widget):
widget.bind("<Button-1>", do-something-cool)
def do-something-cool(event):
#Your code to execute on the event trigger
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:
def main():
# define widgets and other imp stuff
x, y = None, None
widget.bind("<Button-1>", lambda event: do-something-cool(x, y))
def do-something-cool(event, x, y):
x = event.x
y = event.y
#Do other cool stuff
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.