Python Lambda
ฟังก์ชันแลมบ์ดาคือฟังก์ชันนิรนามขนาดเล็ก
ฟังก์ชันแลมบ์ดาสามารถรับอาร์กิวเมนต์จำนวนเท่าใดก็ได้ แต่มีเพียงหนึ่งนิพจน์เท่านั้น
ไวยากรณ์
lambda arguments : expression
นิพจน์ถูกดำเนินการและส่งคืนผลลัพธ์:
ตัวอย่าง
เพิ่ม 10 ให้กับอาร์กิวเมนต์a
และส่งคืนผลลัพธ์:
x = lambda a : a + 10
print(x(5))
ฟังก์ชันแลมบ์ดาสามารถรับอาร์กิวเมนต์จำนวนเท่าใดก็ได้:
ตัวอย่าง
คูณอาร์กิวเมนต์a
ด้วยอาร์กิวเมนต์
b
และส่งคืนผลลัพธ์:
x = lambda a, b : a * b
print(x(5, 6))
ตัวอย่าง
สรุปอาร์กิวเมนต์a
,
b
, c
และส่งคืนผลลัพธ์:
x = lambda a, b, c : a + b + c
print(x(5, 6,
2))
เหตุใดจึงต้องใช้ฟังก์ชันแลมบ์ดา
พลังของแลมบ์ดาจะแสดงได้ดีขึ้นเมื่อคุณใช้เป็นฟังก์ชันที่ไม่ระบุตัวตนภายในฟังก์ชันอื่น
สมมติว่าคุณมีการกำหนดฟังก์ชันที่รับหนึ่งอาร์กิวเมนต์ และอาร์กิวเมนต์นั้นจะถูกคูณด้วยจำนวนที่ไม่รู้จัก:
def myfunc(n):
return lambda a : a * n
ใช้นิยามฟังก์ชันนั้นเพื่อสร้างฟังก์ชันที่เพิ่มตัวเลขที่คุณส่งเข้ามาเป็นสองเท่าเสมอ:
ตัวอย่าง
def myfunc(n):
return lambda a : a * n
mydoubler = myfunc(2)
print(mydoubler(11))
หรือใช้คำจำกัดความของฟังก์ชันเดียวกันเพื่อสร้างฟังก์ชันที่เพิ่มตัวเลขที่คุณส่งเข้ามาสามเท่า เสมอ:
ตัวอย่าง
def myfunc(n):
return lambda a : a * n
mytripler = myfunc(3)
print(mytripler(11))
หรือใช้นิยามฟังก์ชันเดียวกันเพื่อสร้างทั้งสองฟังก์ชันในโปรแกรมเดียวกัน:
ตัวอย่าง
def myfunc(n):
return lambda a : a * n
mydoubler = myfunc(2)
mytripler = myfunc(3)
print(mydoubler(11))
print(mytripler(11))
ใช้ฟังก์ชันแลมบ์ดาเมื่อต้องใช้ฟังก์ชันที่ไม่ระบุตัวตนในช่วงเวลาสั้นๆ