⏱️ ~10 นาที

ฟังก์ชัน (Functions)

แพ็กโค้ดให้ใช้ซ้ำได้ ใน Python

ฟังก์ชันใน Python

ฟังก์ชัน = แพ็กโค้กเป็นกล่อง ใช้ซ้ำได้ จัดการง่าย ใน Python ใช้คำสั่ง def (ย่อจาก define) ประกาศ

ฟังก์ชันแรก

def greet():
    print("สวัสดี!")

greet()      # เรียกใช้ → สวัสดี!
greet()      # เรียกอีก → สวัสดี!

จบบรรทัด def ด้วย : แล้วโค้ดข้างใน ย่อหน้า 4 ช่อง

รับค่าเข้า: Parameter

def greet(name):           # name = parameter
    print("สวัสดี " + name)

greet("สมชาย")             # "สมชาย" = argument
greet("มาลี")

ค่าเริ่มต้น (Default)

def greet(name="เพื่อน"):
    print(f"สวัสดี {name}")

greet()              # สวัสดี เพื่อน (ใช้ค่าเริ่มต้น)
greet("บอย")         # สวัสดี บอย

หลาย parameter

def add(a, b):
    print(a + b)

add(3, 5)            # 8

ส่งค่ากลับ: return

def multiply(a, b):
    return a * b

result = multiply(4, 6)
print(result)        # 24

⚠️ เจอ return ฟังก์ชัน หยุดทันที ถ้าไม่มี return จะคืน None (เทียบเท่า undefined/null)

ลองทำจริง: คำนวณส่วนลด

def calculate_final_price(price, discount_percent):
    discount = price * (discount_percent / 100)
    return price - discount

print(calculate_final_price(1000, 20))   # 800.0
print(calculate_final_price(500, 10))    # 450.0

คืนหลายค่าพร้อมกัน (Python ทำได้สบาย!)

def min_max(numbers):
    return min(numbers), max(numbers)

low, high = min_max([3, 8, 1, 9])
print(low)     # 1
print(high)    # 9

ขอบเขตตัวแปร (Scope)

ตัวแปรในฟังก์ชัน ใช้ในนั้นได้อย่างเดียว:

def test():
    local = "อยู่ในนี้"
    print(local)        # ✅

test()
# print(local)          # ❌ NameError!

Keyword Arguments (เรียกตามชื่อ)

def create_user(name, age, city="กทม."):
    print(f"{name}, {age}, {city}")

# เรียกตามลำดับปกติ
create_user("อร", 25)

# เรียกตามชื่อ (ไม่ต้องจำลำดับ)
create_user(name="บอย", age=30, city="เชียงใหม่")

# กระโดดข้ามตัวที่มีค่าเริ่มต้น
create_user("เชียร์", 22, city="ภูเก็ต")

Argument แบบไม่จำกัด: *args

เมื่อไม่รู้ว่าจะรับกี่ตัว:

def sum_all(*numbers):
    total = 0
    for n in numbers:
        total += n
    return total

print(sum_all(1, 2, 3))          # 6
print(sum_all(10, 20, 30, 40))   # 100

*numbers รวม argument ทั้งหมดเป็น tuple

Docstring — เขียนคำอธิบายฟังก์ชัน

def add(a, b):
    """บวกเลขสองตัวแล้วคืนผลลัพธ์"""
    return a + b

print(add.__doc__)     # แสดงคำอธิบาย
help(add)              # แสดงคำอธิบายแบบเป็นระเบียบ

💡 เป็นนิสัยที่ดี — เขียน docstring อธิบายว่าฟังก์ชันทำอะไร

ฟังก์ชันเป็น "พลเมืองชั้นหนึ่ง"

ใน Python ฟังก์ชันคือตัวแปรชนิดหนึ่ง ส่งไปไหนต่อไหนได้:

def shout(text):
    return text.upper()

my_func = shout
print(my_func("hi"))     # HI

ตั้งชื่อฟังก์ชัน

Python ใช้ snake_case เหมือนตัวแปร:

  • calculate_total, send_message, check_login
  • calculateTotal

สรุป

แนวคิดสรุป
def name():ประกาศฟังก์ชัน
parameter / argumentช่องรับ / ค่าที่ส่ง
returnส่งค่ากลับ
name="default"ค่าเริ่มต้น
*argsรับ argument กี่ตัวก็ได้
docstring """..."""อธิบายฟังก์ชัน

บทหน้า: จัดการข้อมูลแบบกลุ่มด้วย List, Dict, Tuple 📚

อ่านจบแล้ว? ทำเครื่องหมายว่าเสร็จเพื่อบันทึกความคืบหน้า

🧠

แบบทดสอบ

ตอบให้ครบแล้วกด “ตรวจคำตอบ” เพื่อเช็คความเข้าใจ

  1. 1. ใน Python ใช้คำสั่งใดประกาศฟังก์ชัน?

  2. 2. คำสั่งใดใช้ส่งค่ากลับจากฟังก์ชัน Python?

  3. 3. ค่าเริ่มต้นของ parameter ใน Python เขียนอย่างไร?

กำลังโหลด…