ฟังก์ชัน

"ฟังก์ชั่น เป็นกลุ่มของโค้ด ฟังก์ชั่น โดยส่วนใหญ่แล้ว จะรับค่ามาเพื่อคำนวณ และส่งค่าที่คำนวณได้กลับไป โดยฟังก์ชั่นสามารถถูกใช้ได้หลายครั้ง ไม่จำกัดจำนวน และสามารถเรียกจากจุดไหนของโปรแกรมก็ได้"

"ฟังก์ชั่น เป็นการช่วย Debug โปรแกรม เนื่องจากว่า เราสามารถรู้ได้ว่า ปัญหาโค้ดนั้น อยู่ที่บรรทัดใดของโปรแกรม นั่นหมายความว่า ถ้าเรารู้ว่าปัญหาอยู่ที่ฟังก์ชั่นนี้ เราก็สามารถเข้าไปแก้เพียงฟังก์ชั่นนั้นๆ ได้ในทันที ไม่ต้องมานั่งหาทั้งโปรแกรม " - Utah Universityopen in new window

Benefit of Function

  1. น้องสามารถใช้กลุ่มโค้ดนั้นใหม่ได้ ไม่จำเป็นต้องเขียนใหม่ๆ หรือ copy มันซ้ำๆ (Encapsulation)
  2. น้องสามารถระบุว่าส่วนไหนของโปรแกรมมันพัง ทำให้น้องต้องไปมองการแก้ไขได้ตรงจุดมากขึ้น

น้องอาจจะยังไม่เก็ทเท่าไหร่ พี่ก็จะแสดง 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 จุดนั่นคือ

  1. ชื่อฟังก์ชั่น (Function Name)
  2. ตัวแปรที่จะเก็บค่าที่ได้รับมา (Parameter)
  3. โค้ดที่น้องต้องการให้มันทำงาน เมื่อมีการเรียกฟังก์ชั่นนั้น
  4. ค่าที่น้องจะคืนให้ (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 ทำงานอะไรครับ