พื้นฐานโปรแกรมมิ่ง EP.4: “ฟังก์ชัน” (Function) โรงงานผลิตโค้ดอเนกประสงค์ เขียนครั้งเดียว ใช้ได้ตลอดไป
ยินดีต้อนรับสู่ EP.4 ของซีรีส์ Zero to Coder ครับ! เคยไหมครับที่เขียนโค้ดยาวเป็นร้อยบรรทัด แล้วพบว่ามีสูตรคำนวณเดิมๆ ถูกก๊อปปี้แปะ (Copy-Paste) อยู่ทั่วไฟล์ไปหมด? แล้ววันหนึ่งเมื่อหัวหน้าบอกว่า “ช่วยเปลี่ยนสูตรคำนวณภาษีจาก 7% เป็น 8% หน่อย” คุณต้องมานั่งไล่แก้โค้ดนั้นทีละจุด 50 แห่ง!
นี่คือฝันร้ายของการเขียนโค้ดที่โปรแกรมเมอร์รุ่นพี่ทุกคนเคยเจ็บปวดมาแล้ว จึงเกิดกฎเหล็กประจำวงการที่เรียกว่า DRY: Don’t Repeat Yourself (อย่าเขียนอะไรซ้ำๆ) และเครื่องมือที่เกิดมาเพื่อแก้ปัญหานี้ก็คือ ฟังก์ชัน (Functions) นั่นเองครับ
1. ฟังก์ชันคืออะไร? จินตนาการถึง “เครื่องปั่นน้ำผลไม้”
วิธีทำความเข้าใจฟังก์ชันที่ง่ายและเห็นภาพที่สุด คือการมองมันเป็น “เครื่องใช้ไฟฟ้า” สักเครื่องหนึ่ง:
🥤 วงจรชีวิต 3 ส่วนของฟังก์ชัน
- วัตถุดิบที่ใส่เข้าไป (Input / Parameters): เช่น ส้ม, แอปเปิ้ล, น้ำแข็ง
- กลไกการทำงานข้างใน (Process): สับละเอียด, ปั่นรวมกัน (เราไม่ต้องรู้ว่าใบมีดหมุนยังไง แค่รู้ว่ามันปั่นให้)
- ผลลัพธ์ที่ได้ออกมา (Output / Return Value): น้ำผลไม้ปั่นพร้อมดื่ม
2. หน้าตาของฟังก์ชันในโค้ดจริง
ลองดูตัวอย่างการสร้างฟังก์ชันคำนวณราคาสินค้ารวม VAT 7%:
# ขั้นที่ 1: นิยามฟังก์ชัน (สร้างเครื่องปั่นขึ้นมา)
def calculate_vat(price):
vat = price * 0.07
total = price + vat
return total # ส่งผลลัพธ์สุดท้ายกลับออกไป
# ขั้นที่ 2: เรียกใช้งานฟังก์ชัน (กดปุ่มเปิดเครื่อง)
order_1 = calculate_vat(100)
order_2 = calculate_vat(2500)
order_3 = calculate_vat(50000)
print("ยอดรวมออเดอร์ 1:", order_1) # ได้ 107.0
print("ยอดรวมออเดอร์ 2:", order_2) # ได้ 2675.0
เห็นข้อดีไหมครับ? เราเขียนสูตรคำนวณเพียง ครั้งเดียว แต่เราสามารถเรียกใช้งานกี่ร้อยกี่พันครั้งก็ได้ และหากวันหนึ่งต้องเปลี่ยน VAT เป็น 8% เราก็มาแก้แค่ที่บรรทัด vat = price * 0.08 ที่เดียว โค้ดทั้งระบบก็อัปเดตตามทันที!
3. ศัพท์แสงที่ควรรู้: Parameter vs Argument
สองคำนี้เป็นคำที่คนมักใช้สับสนกันบ่อยที่สุด:
- Parameter: คือ “ตัวแปรจำลอง” ที่เราระบุไว้ตอนสร้างฟังก์ชัน (เช่น
priceในวงเล็บตอนสร้าง) - Argument: คือ “ค่าข้อมูลจริง” ที่เราป้อนเข้าไปตอนเรียกใช้งาน (เช่น เลข
100หรือ2500)
4. ความลับเรื่อง Scope: ตัวแปรข้างใน กับ ตัวแปรข้างนอก
ตัวแปรที่ถูกสร้างขึ้น ภายในฟังก์ชัน จะมีชีวิตอยู่แค่ในฟังก์ชันนั้นเท่านั้น เปรียบเหมือนความลับในห้องปิดตาย คนภายนอกมองไม่เห็น เรียกว่า Local Variable:
def my_secret_room():
secret_code = "PASSWORD123"
print("ในห้องรู้รหัส:", secret_code)
my_secret_room()
# ถ้าเราพยายามเรียกใช้จากข้างนอก:
# print(secret_code) -> พังทันที! Error: name 'secret_code' is not defined
ข้อดีของระบบนี้คือ มันช่วยป้องกันไม่ให้ชื่อตัวแปรในฟังก์ชันต่างๆ ไปชนหรือตีกันจนข้อมูลปนเปื้อนครับ
🎯 มินิชาเลนจ์ประจำตอน: ฟังก์ชันคำนวณดัชนีมวลกาย (BMI)
สูตร BMI คือ น้ำหนัก (kg) / (ส่วนสูง (m) * ส่วนสูง (m))
ลองร่างฟังก์ชันชื่อ calculate_bmi(weight, height) ที่รับพารามิเตอร์ 2 ตัวนี้ แล้ว return ค่า BMI ออกมา คุณคิดว่าต้องเขียนกี่บรรทัด?
สรุปภาพรวม EP.4
ฟังก์ชันคือการเปลี่ยนโค้ดที่รุงรังให้กลายเป็น “โมดูลชิ้นส่วนสำเร็จรูป” ที่อ่านง่าย ทดสอบง่าย และนำกลับมาใช้ซ้ำได้ไม่รู้จบ ถือเป็นบันไดขั้นสำคัญสู่การเขียนโปรแกรมระดับมืออาชีพ
ในตอนถัดไป EP.5 เราจะมาเรียนรู้วิธีการเก็บข้อมูลที่ซับซ้อนขึ้น เมื่อตัวแปรเดี่ยวๆ เริ่มเอาไม่อยู่ เราจะจัดระเบียบข้อมูลเป็นคลังด้วย Array / List และ Object / Dictionary ได้อย่างไร ติดตามต่อได้เลยครับ!
📚 ไม่พลาดทุกบทเรียนในซีรีส์ Zero to Coder
เรียนรู้พื้นฐานการเขียนโปรแกรมทีละสเต็ป พร้อมตัวอย่างที่นำไปใช้ได้จริงกับทุกภาษาคอมพิวเตอร์