ฟังก์ชัน
"ฟังก์ชั่น เป็นกลุ่มของโค้ด ฟังก์ชั่น โดยส่วนใหญ่แล้ว จะรับค่ามาเพื่อคำนวณ และส่งค่าที่คำนวณได้กลับไป โดยฟังก์ชั่นสามารถถูกใช้ได้หลายครั้ง ไม่จำกัดจำนวน และสามารถเรียกจากจุดไหนของโปรแกรมก็ได้"
"ฟังก์ชั่น เป็นการช่วย Debug โปรแกรม เนื่องจากว่า เราสามารถรู้ได้ว่า ปัญหาโค้ดนั้น อยู่ที่บรรทัดใดของโปรแกรม นั่นหมายความว่า ถ้าเรารู้ว่าปัญหาอยู่ที่ฟังก์ชั่นนี้ เราก็สามารถเข้าไปแก้เพียงฟังก์ชั่นนั้นๆ ได้ในทันที ไม่ต้องมานั่งหาทั้งโปรแกรม " - Utah University
Benefit of Function
- น้องสามารถใช้กลุ่มโค้ดนั้นใหม่ได้ ไม่จำเป็นต้องเขียนใหม่ๆ หรือ copy มันซ้ำๆ (Encapsulation)
- น้องสามารถระบุว่าส่วนไหนของโปรแกรมมันพัง ทำให้น้องต้องไปมองการแก้ไขได้ตรงจุดมากขึ้น
น้องอาจจะยังไม่เก็ทเท่าไหร่ พี่ก็จะแสดง code ให้ดูครับ
ตัวอย่างโค้ดที่ไม่ใช้ฟังกชัน
var1 = 12 # แจกแจงตัวแปร 1
var2 = 24 # แจกแจงตัวแปร 1
var3 = var1 + var2 # คำนวณเลข
print(var1 + var2) # คำนวณเลข
var1 = 45 # แจกแจงตัวแปร 2
var2 = 725 # แจกแจงตัวแปร 2
var3 = var1 + var2 # คำนวณเลข
print(var1 + var2) # คำนวณเลข
var1 = 27 # แจกแจงตัวแปร 3
var2 = 83 # แจกแจงตัวแปร 3
var3 = var1 + var2 # คำนวณเลข
print(var1 + var2) # คำนวณเลข
และเมื่อพี่มงเอา code ด้านบนมาเปลี่ยนแปลง เพื่อใช้ฟังก์ชั่น ก็จะเป็นแบบนี้
def main():
adder(12, 24) # แจกแจงตัวแปร 1 + เรียกตัวคำนวณ adder
adder(45, 725) # แจกแจงตัวแปร 2 + เรียกตัวคำนวณ adder
adder(27, 83) # แจกแจงตัวแปร 3 + เรียกตัวคำนวณ adder
def adder(var1, var2):
var3 = var1 + var2 # คำนวณเลข
print(var3) # คำนวณเลข
main() # เรียกฟังก์ชัน main
เห็นหรือเปล่าครับ ว่าน้องๆจะอ่านด้านล่างได้ง่ายกว่า (ถ้าน้องเข้าใจมันอ่ะนะ) และหากว่าอนาคต น้องอยากใช้ฟังก์ชันอีก ก็สามารถเรียกได้เลย ไม่ต้องทำการก้อปแปะโค้ดอีก
สำหรับหลักการเขียนนั้น ก็อ่านต่อเลยจ้า
Create new function
การสร้าง function ใหม่นั้น ง่ายมากๆเลยครับ โดยก็ต้องมีหลักการเขียนอ่ะเนอะ
def kumamon(value_a, value_b):
result = value_a + value_b + 12
return result
kumamon(1112, 1669)
หลักๆ ของ Function นั้น ก็จะมีองค์ประกอบอยู่่ 4 จุดนั่นคือ
- ชื่อฟังก์ชั่น (Function Name)
- ตัวแปรที่จะเก็บค่าที่ได้รับมา (Parameter)
- โค้ดที่น้องต้องการให้มันทำงาน เมื่อมีการเรียกฟังก์ชั่นนั้น
- ค่าที่น้องจะคืนให้ (return parameter)
Function Name
def kumamon
การสร้างฟังก์ชันใหม่ ก็จะเรื่มด้วย def
ตามด้วยชื่อฟังกชั่น (ตามที่น้องอยากจะเรียกมัน)
ในตัวอย่างด้านล่าง พี่มงได้ตั้งชื่อฟังก์ชั่นนี้เป็น kumamon()
ทำให้เมื่อพี่มงต้องการที่จะใช้ฟังกชันนี้ พี่ก็จะเรียกฟังก์ชัน โดยการเขียน kumamon()
ไว้ตรงจุดที่พี่มงต้องการเอาไปใช้งาน
Parameters
(value_a, value_b):
สำหรับ () หลังชื่อฟังกชันนั้น จะเป็นตัวบอกว่าต้องรับตัวแปรอะไร (ศัพท์ทางการ : Parameters) เมื่อมีการเรียก หากว่าพี่มงเขียนชื่อ function ว่า adder(var1, var2)
นั่นก็หมายความว่า ถ้าจะเรียกฟังกชันนี้ ก็จำเป็นที่จะต้องให้ตัวแปรมันก่อน โดยการเขียน และการเรียงเหมือนชื่อฟังกชันเลย
บนตัวอย่างด้านบนสุดนั้น พี่มงได้มีการเรียกฟังกชัน adder()
โดยการโยนเลขเข้าไปด้วย นั่นคือ 12 กับ 24 (adder(12, 24)
)
นั่นหมายความว่า พี่มงได้เรียกฟังกชัน adder(var1, var2)
แล้ว และเลข 12 ก็จะไปจัดเก๋็บอยู่ในตัวแปร var1 ทันที เช่นเดียวกันกับเลข 24
Call Function
ง่ายๆเลย โดยการเขียนชื่อฟังก์ชั่น และตามด้วย ()
kumamon()
แต่หากว่าน้องๆต้องการใช้ฟังก์ชั่นที่ต้องมี Parameter ก็ต้องทำการให้มันด้วยนะครับ
โดยการเขียนตัวแปรที่น้องจะให้มัน ดังนี้
kumamon(1112, 1669)
หากสั่งให้มันทำงานแล้ว
- เลข 1112 นั้นก็จะถูกเก็บที่ตัวแปร
value_a
- และ 1669 ก็จะถูกเก็บไว้ที่ตัวแปร
value_b
และก็ทำการเอาไปบวกกับ 12 และคืนผลลัพท์ออกมา ที่มีค่าเท่ากับตัวแปร result
นั่นเองครับ
Code
result = value_a + value_b + 12
ส่วนต่อไปคือ code ภายใน function ซึ่ง code ข้างใน function จะทำงานก็ต่อเมื่อ function ถูกเรียกใช้งาน
น้องๆจะสังเกตุจากโค้ดด้านบนว่า พี่ได้ทำการกด TAB (เท่ากับการกด SPACE BAR 4 ครั้งของ Python (โดยเรียก tab แบบนี้ว่า Soft Tab)) และพี่ก็จะเขียนโค้ดที่หากว่าฟังกชั่นนี้ทำงาน ก็จะทำการ run โปรแกรมที่อยู่ในบรรทัดที่มีการกด TAB
Return Parameter
return result
เป็นค่าที่น้องจะคืนให้กับตัวที่เรียก function นั้นมาทำงาน ตัวอย่างเช่นฟังก์ชั่น calculator()
ได้เรียก adder()
เพื่อให้คำนวณการบวกให้หน่อย
และเมื่อ adder()
คำนวณเสร็จแล้ว ตัว calculator()
ก็ดันอยากได้ผลลัพท์การคำนวณชะด้วยสิ
การคืนค่า parameter กลับไป จะใช้คีย์เวิร์ด return
และก็ตามด้วยผลลัพท์ หรือตัวแปรครับ ตามตัวอย่างเลย
WARNING
kumamon(1112, 1669)
ในบรรทัดที่ 5 นั้น มีการเรียกฟังก์ชันที่อยู่นอกฟังก์ชันอื่นๆ
ก็เพราะว่า ตัว Python จะไม่รัน code ที่อยู่ใน function ถ้าน้องๆ ไม่ได้เรียกมันมาทำงาน ดังนั้น ถ้าน้องไม่มีการเรียกฟังก์ชันในบรรทัดที่ 5 แล้ว
ก็เหมือนกับว่าไม่ได้ให้ Python ทำงานอะไรครับ