Lambda Expression คืออะไร

Lambda Expression คืออะไร สอนเขียน Anonymous Function ตัวอย่างการใช้งาน Lambda Function ในภาษา Python

Lambda Expression คือ การประกาศฟังก์ชันเล็ก ๆ ที่สร้างขึ้นมาเฉพาะกิจ ในภาษา Python เป็น Anonymous Function คือ ฟังก์ชันนิรนาม ที่ประกาศโดยไม่ได้ตั้งชื่อ การไม่ได้ประกาศฟังก์ชันอย่างเต็มรูปแบบ ความกระชับของโค้ด และการไม่ได้ตั้งชื่อ ทำให้มีข้อดี เหมาะกับใช้ซ้อนในฟังก์ชั่นอื่น

เราสามารถสร้าง Lambda Expression ให้รับ Parameter กี่ตัวก็ได้ แต่ Lambda Function นั้นต้องประกอบด้วย 1 Expression เท่านั้น โดยไม่ต้องระบุ return เพราะ ​Lambda Function จะ return Expression นั้นโดยอัตโนมัติ

เรามาเริ่มกันเลยดีกว่า

ตัวอย่าง Lambda Function

ตัวอย่าง Lambda Function ที่รับ Parameter มา บวก 1 แล้ว return ผลลัพธ์In [0]:

x = lambda a : a + 1
x

Out[0]:

<function __main__.<lambda>>

เรียกฟังก์ชัน ด้วย Parameter 5

In [0]:

x(5)

Out[0]:

6

เราสามารถสร้าง Lambda Function ที่รับ Parameter มากกว่า 1 ตัว ดังตัวอย่างด้านล่าง ที่รับ Parameter 2 ตัวIn [0]:

x2 = lambda a, b : (a * b) + 0.05

In [0]:

x2(2, 3)

Out[0]:

6.05

หรือ 3 Parameter ดังตัวอย่างIn [0]:

x3 = lambda a, b, c : (a * b) + c + 700

In [0]:

x3(3, 4, 1000)

Out[0]:

1712

ทำไมเราต้องใช้ Lambda Function

Lambda Function จะมีประโยชน์มาก เมื่อเราใช้เป็น Anonymous Function ภายในฟังก์ชันอื่น ดังตัวอย่าง

สมมติเราต้องการสร้างฟังก์ชัน ที่จะคูณกับค่าที่เรากำหนดIn [0]:

def multiply_j(j):
    return lambda a : a * j

เราจะสร้างฟังก์ชันที่จะคูณ 8In [0]:

m8 = multiply_j(j=8)
m8

Out[0]:

<function __main__.multiply_j.<locals>.<lambda>>

In [0]:

m8(12)

Out[0]:

96

เราจะสร้าง 3 ฟังก์ชัน ที่คุณกับเลข 3, 5, 7In [0]:

m3 = multiply_j(3)
m5 = multiply_j(5)
m7 = multiply_j(7)

ลองเรียกทั้ง 3 ฟังก์ชัน ด้วย 3In [0]:

m3(3), m5(3), m7(3)

Out[0]:

(9, 15, 21)

ตัวอย่างการใช้งาน Lambda Function

เราสามารถประกาศ Lambda Function พร้อม ๆ กับ Call ได้เลยIn [0]:

 (lambda x: x + x)(12) 

Out[0]:

24

เราสามารถสร้าง Lambda Function ส่งให้กับฟังก์ชันที่ต้องการ Parameter เป็นฟังก์ชัน แทนที่จะต้องประกาศฟังก์ชันแบบเต็มรูปแบบ เช่น ฟังก์ชัน filter ต้องการ Parameter เป็นฟังก์ชัน ที่ return True ให้ x ผ่านการกรองIn [0]:

s = [85, 44, 3, 22, 1, 32, 24, 49, 11, 26, 20, 0, 10]
result = filter (lambda x: x > 20, s) 
print(list(result))
[85, 44, 22, 32, 24, 49, 26]

Credit

บทความที่เกี่ยวข้อง:

Reference : https://www.bualabs.com/archives/2252/what-is-lambda-function-teach-lambda-function-python-ep-7/#more-2252

Last updated