ฟังก์ชัน Lambda ใน Python

สมมติว่าเรามีฟังก์ชัน func, ซึ่งรับพารามิเตอร์เป็นรายการและ callback ฟังก์ชันจะสร้างรายการใหม่ จากองค์ประกอบของรายการต้นทาง ใน ขณะเดียวกัน callback จะถูกนำไปใช้กับ แต่ละองค์ประกอบ:

pythondef func(lst, callback):
  res = []
  
  for el in lst:
    res.append(callback(el))
    
  return res

ตอนนี้มาสร้างฟังก์ชัน square, ซึ่งจะยกกำลังตัวเลขที่ส่งให้ เป็นสอง:

pythondef square(num):
  return num ** 2

ลองส่งรายการตัวเลขและฟังก์ชัน square เป็น callback ไปยังพารามิเตอร์ func:

pythonprint( func([1, 2, 3], square) )

รายการใหม่ที่ประกอบด้วย ตัวเลขกำลังสองจะแสดงในคอนโซล:

python[1, 4, 9]

อย่างไรก็ตาม รหัสนี้สามารถลดให้สั้นลงได้อย่างมาก โดยใช้ ฟังก์ชัน Lambda - ฟังก์ชันที่ไม่ระบุชื่อ ซึ่งเรียกใช้งานด้วย คีย์เวิร์ด lambda และ เขียนในบรรทัดเดียว ดังนั้นใน ฟังก์ชัน Lambda จึงสามารถเขียนใหม่ได้เฉพาะ ฟังก์ชันที่มีโค้ดครอบคลุมเพียงบรรทัดเดียว

ไวยากรณ์ของฟังก์ชัน Lambda มีลักษณะดังนี้:

pythonlambda พารามิเตอร์ของฟังก์ชัน: การดำเนินการกับพารามิเตอร์ของฟังก์ชัน

ลองเขียนฟังก์ชัน square ใหม่ด้วย ฟังก์ชัน Lambda และส่งไปยัง พารามิเตอร์ func:

pythonprint( func([1, 2, 3], lambda num: num ** 2) )

สามารถเขียนฟังก์ชัน Lambda ลงในตัวแปรได้:

pythonsquare = lambda num: num ** 2
print( func([1, 2, 3], square) )
Задание 1

เขียนโค้ดต่อไปนี้ใหม่โดยใช้ฟังก์ชัน Lambda:

pythondef func(num, clb):
  return clb(num)

def clb(num):
  return num + 1
  
print( func(2, clb) )
Задание 2

เขียนโค้ดต่อไปนี้ใหม่โดยใช้ฟังก์ชัน Lambda:

pythondef func(num, clb1, clb2):
  return (clb1(num), clb2(num))

def clb1(num):
  return num + 1
  
def clb2(num):
  return num - 1
  
print( func(2, clb1, clb2) )
Задание 3

เขียนโค้ดต่อไปนี้ใหม่โดยใช้ฟังก์ชัน Lambda:

pythondef func(num1, num2, clb):
  res = clb(num1) + num2
  return res
  
def clb(num):
  return num ** 3
  
print(func(2, 6, clb))