ฟังก์ชั่นในการเขียนโปรแกรมเป็นชุดคำสั่งที่มีไว้เพื่อทำงานบางอย่างใช่ไหมครับ เช่น print เป็น function ในการแสดงข้อความของ Python โดยปกติแล้วฟังก์ชั่นมักจะรับค่าข้อมูลบางอย่าง และสั่งการหรือคืนค่าข้อมูลตัวใหม่ออกมา นอกจากการรับข้อมูลนะครับ ในบางภาษาเราสามารถใส่ฟังก์ชั่นหรือคืนค่าฟังก์ชั่นออกมาได้ด้วยครับ
Higher Order Function
เป็นฟังก์ชั่นที่รับฟังก์ชั่นเข้ามาเป้น arguement หรือคืนค่าฟังก์ชั่นออกมา ตัวอย่างตามโค้ดด้านล่างครับ
def f_plus_one(x, f):
return f(x + 1)
จะเห็นว่าเราเรียน f
ที่เป็น parameter ของ f_plus_one
ด้วย x+1
ในตัวอย่างนี้อาจจะไม่ได้เห็นประโยชน์ของมันมากนัก แต่ว่าการนำมาใช้จะอยู่ในตัวอย่างถัดไป
squared = list(map(lambda x: x**2, range(100)))
ในตัวอย่างนี้ squared จะเป็น list ของค่าทุกค่าใน range(100)
กำลังสอง
ฟังก์ชั่นที่รับฟังก์ชั่นเข้ามามีประโยชน์อย่างมากในการทำ routing การจัดการข้อมูล (map, filter, reduce) ลดจำนวนการเขียน loop หรือ condition ไปได้มากเลยครับ
ใน Python ผมยังไม่เคยเห็นฟังก์ชั่นที่คืนค่าออกมาเป็นฟังก์ชั่นครับ แต่ว่ามักจะพบใน JavaScript เช่นการทำ debounce เพื่อป้องกันการส่ง request หลาย ๆ ครั้งขณะที่ยังพิมพ์ไม่เสร็จครรับ