แลมบ์ดาเป็นสิ่งก่อสร้างที่ทรงพลังอย่างแท้จริงซึ่งเกิดจากแนวคิดในการเขียนโปรแกรมการทำงานและเป็นสิ่งที่ไม่สามารถแก้ไขแก้ไขหรือลบทิ้งได้ในอนาคตอันใกล้ของ Python พวกเขาช่วยให้คุณเขียนโค้ดที่มีประสิทธิภาพยิ่งขึ้นเพราะจะช่วยให้คุณสามารถส่งผ่านฟังก์ชั่นเป็นพารามิเตอร์ได้ดังนั้นแนวคิดของฟังก์ชั่นในฐานะพลเมืองชั้นหนึ่ง
แลมบ์ดามีแนวโน้มที่จะทำให้เกิดความสับสน แต่เมื่อได้รับความเข้าใจที่ดีแล้วคุณสามารถเขียนโค้ดที่สง่างามเช่นนี้:
squared = map(lambda x: x*x, [1, 2, 3, 4, 5])
บรรทัดด้านบนของโค้ดส่งคืนรายการของกำลังสองของตัวเลขในรายการ แน่นอนคุณสามารถทำเช่น:
def square(x):
return x*x
squared = map(square, [1, 2, 3, 4, 5])
จะเห็นได้ชัดว่าโค้ดเก่านั้นสั้นกว่าและนี่เป็นเรื่องจริงโดยเฉพาะอย่างยิ่งหากคุณต้องการใช้ฟังก์ชั่นแผนที่ (หรือฟังก์ชั่นอื่น ๆ ที่คล้ายกันซึ่งรับฟังก์ชั่นเป็นพารามิเตอร์) ในที่เดียวเท่านั้น นอกจากนี้ยังทำให้รหัสใช้งานง่ายและสวยงามยิ่งขึ้น
นอกจากนี้ตามที่ @David Zaslavsky พูดถึงในคำตอบของเขาความเข้าใจในรายการไม่ได้เป็นวิธีที่จะไปโดยเฉพาะอย่างยิ่งหากรายการของคุณต้องได้รับค่าจากวิธีการทางคณิตศาสตร์ที่คลุมเครือ
จากมุมมองที่ใช้งานได้จริงมากขึ้นข้อดีอย่างหนึ่งของ lambdas สำหรับฉันเมื่อเร็ว ๆ นี้คือใน GUI และการเขียนโปรแกรมที่ขับเคลื่อนด้วยเหตุการณ์ หากคุณดูการโทรกลับใน Tkinter สิ่งที่พวกเขาใช้เป็นข้อโต้แย้งคือเหตุการณ์ที่ทำให้พวกเขา เช่น
def define_bindings(widget):
widget.bind("<Button-1>", do-something-cool)
def do-something-cool(event):
#Your code to execute on the event trigger
ตอนนี้ถ้าคุณมีข้อโต้แย้งที่จะผ่าน? บางอย่างง่ายดายเพียงแค่ส่ง 2 ข้อโต้แย้งเพื่อจัดเก็บพิกัดของการคลิกเมาส์ คุณสามารถทำสิ่งนี้ได้อย่างง่ายดาย:
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
ตอนนี้คุณสามารถยืนยันว่าสิ่งนี้สามารถทำได้โดยใช้ตัวแปรทั่วโลก แต่คุณต้องการที่จะปังหัวของคุณกังวลเกี่ยวกับการจัดการหน่วยความจำและการรั่วไหลโดยเฉพาะอย่างยิ่งถ้าตัวแปรทั่วโลกจะถูกนำมาใช้ในที่เดียว? นั่นจะเป็นรูปแบบการเขียนโปรแกรมที่ไม่ดี
กล่าวโดยสรุปแลมบ์ดานั้นยอดเยี่ยมและไม่ควรประมาท Python lambdas นั้นไม่เหมือนกับ LISP lambdas (ซึ่งมีพลังมากกว่า) แต่คุณสามารถทำสิ่งมหัศจรรย์มากมายกับพวกมันได้