การสร้างฟังก์ชันและโมดูล (Functions & Modular Code)
แบ่งโค้ดออกเป็นชิ้นส่วนย่อยที่นำกลับมาใช้ซ้ำได้อย่างไร? สร้างชุดเครื่องมือคำนวณทางวิทยาศาสตร์ (Science Toolkit) ของคุณเอง
นักวิจัยสร้างฟังก์ชันเฉพาะทางเพื่อวิเคราะห์ข้อมูลซ้ำๆ ได้อย่างไร?
"ในการพัฒนาซอฟต์แวร์ทางวิทยาศาสตร์ระดับโลก เช่น ไลบรารี NumPy หรือ PyTorch โค้ดไม่ได้เขียนยาวพรืดในหน้าเดียว แต่ถูกจัดเป็น 'ฟังก์ชัน (Functions)' ย่อยๆ ที่เรียกใช้ซ้ำได้อย่างมีประสิทธิภาพและไร้ข้อผิดพลาด!"
ชีววิทยา (Biology)
ฟังก์ชันคำนวณปริมาณสารอาหาร หรือ ฟังก์ชันคำนวณ DNA GC-Content
ฟิสิกส์ (Physics)
ฟังก์ชันคำนวณแรง ความดัน หรือ พลังงาน จากตัวแปรต้นต่างๆ
เคมี (Chemistry)
ฟังก์ชันคำนวณ pH และความเข้มข้นสารที่ใช้ซ้ำในการทดลองหลายๆ ครั้ง
1 ฟังก์ชันคืออะไร? ทำไมต้องสร้างฟังก์ชัน
ฟังก์ชัน (Function) คือชุดคำสั่งที่ถูกจัดกลุ่มไว้ด้วยกันเพื่อทำงานเฉพาะอย่างหนึ่ง เราสร้างฟังก์ชันเพื่อ Modular Programming หรือแบ่งโปรแกรมใหญ่ๆ เป็นชิ้นส่วนย่อยๆ ที่จัดการง่ายและนำกลับมาใช้ใหม่ได้
หลักการสำคัญคือ DRY: Don't Repeat Yourself การเขียนโค้ดซ้ำๆ มักทำให้โปรแกรมยาว อ่านยาก และเสี่ยงต่อการเกิดข้อผิดพลาด หากมีโค้ดที่ทำหน้าที่เดียวกันซ้ำๆ เราควรแยกมันเป็น "ฟังก์ชัน"
2 การนิยามฟังก์ชันด้วยคีย์เวิร์ด def
ในภาษา Python เราสร้างฟังก์ชันด้วยคีย์เวิร์ด def ย่อมาจาก define โดยมีโครงสร้างดังนี้:
def ชื่อฟังก์ชัน(พารามิเตอร์):
# คำสั่งที่ต้องการให้ทำงาน
return ผลลัพธ์
📌 ตัวอย่างฟังก์ชันทักทายง่ายๆ:
def greet():
print("สวัสดี! ยินดีต้อนรับสู่ห้องแล็บ")
# การเรียกใช้งาน (Calling a function)
greet()
greet()
3 การส่งค่าผลลัพธ์กลับด้วย return
ความแตกต่างสำคัญระหว่าง print() กับ return: print() เป็นเพียงการแสดงผลออกทางหน้าจอ แต่ return จะ ส่งค่ากลับออกจากฟังก์ชัน เพื่อนำไปคำนวณต่อหรือเก็บใส่ตัวแปรได้
def add_numbers(x, y):
result = x + y
return result
# เก็บค่าที่ return กลับมาลงในตัวแปร total
total = add_numbers(10, 5)
print("ผลรวมคือ:", total * 2) # นำไปคำนวณต่อได้
4 พารามิเตอร์และอาร์กิวเมนต์ (Parameters & Arguments)
พารามิเตอร์ (Parameter) คือตัวแปรที่รับค่าเข้ามาในวงเล็บตอนนิยามฟังก์ชัน อาร์กิวเมนต์ (Argument) คือค่าที่ส่งเข้าไปตอนเรียกใช้งาน เราสามารถกำหนด ค่าเริ่มต้น (Default Parameters) ให้กับพารามิเตอร์ได้
def calculate_energy(mass, velocity=10):
return 0.5 * mass * (velocity ** 2)
print(calculate_energy(5)) # mass=5, velocity=10 (ใช้ค่าเริ่มต้น)
print(calculate_energy(5, 20)) # mass=5, velocity=20
5 ฟังก์ชันเรียกใช้ฟังก์ชันย่อย (Composing Functions)
ในการเขียนโปรแกรม เราสามารถแบ่งงานใหญ่ๆ เป็นฟังก์ชันย่อย และให้ฟังก์ชันหนึ่งเรียกใช้อีกฟังก์ชันหนึ่งได้ เพื่อลดความซับซ้อน
def get_celsius(fahrenheit):
return (fahrenheit - 32) * 5/9
def display_weather(fahrenheit):
c = get_celsius(fahrenheit) # เรียกใช้ฟังก์ชันอื่น
print(f"อุณหภูมิ {fahrenheit}F เท่ากับ {c:.2f}C")
display_weather(100)
6 ฟังก์ชันสำเร็จรูปที่ควรรู้ (Built-in Functions)
Python มีฟังก์ชันที่สร้างไว้ให้พร้อมใช้งานมากมาย (Built-in) เช่น:
len()หาจำนวนสมาชิก เช่น ความยาวข้อความหรือ Listsum()หาผลรวมของตัวเลขใน Listmin()/max()หาค่าน้อยที่สุด/มากที่สุดabs()หาค่าสัมบูรณ์round()ปัดเศษทศนิยมsorted()เรียงลำดับข้อมูล
data = [12.5, 4.2, 9.8, 15.1]
print("มากสุด:", max(data))
print("รวม:", sum(data))
print("เรียง:", sorted(data))
📋 สรุปสิ่งที่เรียนรู้ในบทนี้
defสร้างฟังก์ชัน
returnส่งค่ากลับ
parameterรับค่าเข้า
built-inฟังก์ชันสำเร็จรูป
🟢 ระดับ 1 โจทย์พื้นฐาน: ฟังก์ชันคำนวณพื้นที่วงกลม
จงเติมคำสั่ง def และ return ในฟังก์ชัน circle_area(radius) โดยใช้สูตร 3.14159 * radius * radius แล้วเรียกใช้กับรัศมี 5.0
def หน้าชื่อฟังก์ชัน และ return เพื่อส่งค่าผลลัพธ์กลับ
กดปุ่ม "รันโค้ด" หรือ "ตรวจคำตอบ" เพื่อดูผลลัพธ์...
🟡 ระดับ 2 โจทย์ท้าทาย: ชุดฟังก์ชันฟิสิกส์
สร้างฟังก์ชัน calc_kinetic_energy(m, v) (สูตร: 0.5 * m * v**2) และ calc_momentum(m, v) (สูตร: m * v) แล้วเรียกใช้โดยให้ m=12.0 และ v=4.5
def calc_kinetic_energy(m, v): แล้วคืนค่า 0.5 * m * (v**2)
กดปุ่ม "รันโค้ด" หรือ "ตรวจคำตอบ" เพื่อดูผลลัพธ์...
🔴 ระดับ 3 โจทย์สร้างสรรค์ (ALPS-AI): Science Function Toolkit
ALPS Frameworkออกแบบชุดฟังก์ชันทางวิทยาศาสตร์สำหรับสาขาที่คุณสนใจ (อย่างน้อย 3 ฟังก์ชัน) และเขียน Docstring ("""คำอธิบาย""") ให้แต่ละฟังก์ชัน
"คุณคือนักพัฒนาซอฟต์แวร์ทางวิทยาศาสตร์ ช่วยสร้างฟังก์ชันโมดูลาร์ Python Toolkit สำหรับคำนวณสมดุลเคมีหรือพลังงานกล พร้อม Docstring อธิบายการทำงานอย่างละเอียด"
def calc_molarity(moles, volume): """คำนวณความเข้มข้น (M)""" return moles / volume
กดปุ่ม "รันโค้ด" เพื่อดูผลลัพธ์...
แบบบันทึกผลงานโครงงานและการตรวจทานโค้ด (ALPS Portfolio)
บันทึกขั้นตอนการออกแบบแนวคิด คำสั่ง และการตรวจทานโค้ดจาก AI เพื่อประเมินผลการเรียนรู้
ตอบคำถาม 5 ข้อ เพื่อประเมินความเข้าใจและบันทึกผลการเรียนรู้ของบทที่ 7:
1. คำสำคัญ (Keyword) ใดในภาษา Python ที่ใช้สำหรับเริ่มต้นสร้างฟังก์ชันใหม่?
2. คำสั่งใดใช้สำหรับส่งค่าผลลัพธ์กลับออกจากฟังก์ชัน เพื่อนำไปคำนวณต่อได้?
3. ฟังก์ชันนี้: def add(a, b=5): return a + b หากเรียกใช้ add(10) จะได้ผลลัพธ์เท่าใด?
4. ความแตกต่างระหว่าง print() และ return ในฟังก์ชันคือข้อใด?
5. หากต้องการหาค่าสูงสุดจากชุดข้อมูล numbers = [12, 45, 7, 89, 34] ควรใช้ฟังก์ชัน Built-in ใด?