0Pricing
Python Academy · บทเรียน

พื้นฐาน match และ case

แยกแขนงตามรูปแบบของค่า

พื้นฐาน match และ case เป็นบทเรียน Python Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Python Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

การจับคู่รูปแบบเชิงโครงสร้าง

ไพธอน 3.10 นำเสนอ การจับคู่รูปแบบเชิงโครงสร้างด้วยคำสั่ง match คำสั่งนี้เปรียบเทียบค่ากับรูปแบบหลายรูปแบบ แล้วเรียกใช้รูปแบบแรกที่ตรงกัน ซึ่งมีความสามารถมากกว่าการต่อคำสั่ง if/elif หลายชั้นอย่างมาก

ไวยากรณ์พื้นฐาน

เขียน match ตามด้วยค่าหลัก แล้วเขียนบล็อก case อย่างน้อยหนึ่งบล็อก ระบบจะเรียกใช้กรณีแรกที่ตรงกัน

command = 'start'

match command:
    case 'start':
        print('Starting up')
    case 'stop':
        print('Shutting down')

# prints: Starting up

การจับคู่ค่าลิเทอรัล

รูปแบบที่ง่ายที่สุดคือค่าลิเทอรัล ได้แก่ ตัวเลข สตริง True False และ None รูปแบบเหล่านี้จะตรงกันเมื่อค่าหลักเท่ากับค่าลิเทอรัล

code = 404

match code:
    case 200:
        print('OK')
    case 404:
        print('Not Found')
    case 500:
        print('Server Error')

ไวลด์การ์ด _

ขีดล่าง _ เป็นรูปแบบไวลด์การ์ดที่ตรงกับทุกสิ่ง ควรวางไว้เป็นรายการสุดท้ายเพื่อใช้เป็นค่าเริ่มต้นที่ครอบคลุมทุกกรณี เช่นเดียวกับ else

code = 418

match code:
    case 200:
        print('OK')
    case _:
        print('Unknown status')

การรวมด้วย OR

ใช้ตัวดำเนินการ | ภายในกรณีเพื่อจับคู่กับรูปแบบใดรูปแบบหนึ่งจากหลายรูปแบบ

code = 301

match code:
    case 200 | 201 | 204:
        print('Success')
    case 301 | 302:
        print('Redirect')
    case _:
        print('Other')

การจับค่าที่ตรงกัน

ชื่อเปล่าในรูปแบบจะ จับค่า หลักไว้ในตัวแปรนั้น ใช้เมื่อคุณจับคู่แบบครอบคลุมทุกกรณีแล้ว แต่ยังต้องการเก็บค่าไว้

value = 42

match value:
    case 0:
        print('zero')
    case other:
        print('got', other)

ลำดับมีความสำคัญ

ระบบตรวจกรณีต่าง ๆ จากบนลงล่าง และการจับคู่ครั้งแรกจะเป็นผล รูปแบบที่จับค่าได้กว้างและวางไว้เร็วเกินไปจะบดบังกรณีที่เฉพาะเจาะจงกว่าซึ่งอยู่ถัดไป

x = 5

match x:
    case n:           # matches everything first!
        print('caught by capture')
    case 5:
        print('this never runs')

คำสั่งจับคู่ไม่คืนค่า

match เป็นคำสั่ง ไม่ใช่นิพจน์ จึงไม่คืนค่า หากต้องการผลลัพธ์ ให้กำหนดตัวแปรภายในกรณีต่าง ๆ

day = 6
label = ''

match day:
    case 0 | 6:
        label = 'weekend'
    case _:
        label = 'weekday'

print(label)

การจับคู่ None

คุณสามารถจับคู่กับ None ได้โดยตรง วิธีนี้อ่านง่ายกว่าการตรวจสอบ is None อย่างชัดเจนภายในสายคำสั่ง

def describe(value):
    match value:
        case None:
            return 'nothing'
        case _:
            return 'something: ' + str(value)

print(describe(None))
print(describe(7))

ตัวกระจายคำสั่งที่ใช้งานได้จริง

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

def handle(cmd):
    match cmd:
        case 'help':
            return 'Showing help'
        case 'quit' | 'exit':
            return 'Goodbye'
        case _:
            return 'Unknown command'

print(handle('exit'))
print(handle('foo'))

การจับคู่ True, False และ None

ค่าคงที่ True False และ None จะจับคู่โดยดูจากความเป็นวัตถุเดียวกัน ไม่ใช่ความเท่ากัน ทำให้เป็นค่าเดี่ยวที่เชื่อถือได้สำหรับใช้เลือกเส้นทาง

def report(flag):
    match flag:
        case True:
            return 'enabled'
        case False:
            return 'disabled'
        case None:
            return 'unset'

print(report(True))
print(report(None))

ตรวจสอบความเข้าใจ

รูปแบบไวลด์การ์ด _ ทำอะไรในคำสั่งจับคู่

ทบทวน

คุณได้เรียนรู้การเลือกเส้นทางตามรูปแบบของค่า

  • match ตรวจกรณีต่าง ๆ จากบนลงล่าง และการจับคู่ครั้งแรกจะเป็นผล
  • จับคู่ค่าลิเทอรัล ใช้ _ เพื่อครอบคลุมทุกกรณี และรวมรูปแบบด้วย |
  • ชื่อเปล่าจะจับค่าไว้
  • match เป็นคำสั่ง ไม่ใช่นิพจน์

คำถามที่พบบ่อย

บทเรียน “พื้นฐาน match และ case” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “พื้นฐาน match และ case” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Python Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “พื้นฐาน match และ case”

แยกแขนงตามรูปแบบของค่า คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Python Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Python Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “พื้นฐาน match และ case” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Python Academy นี้ได้ไหม

ได้ บทเรียน Python Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. พื้นฐาน match และ case
  2. การจับคู่ลำดับและแมป
  3. รูปแบบคลาส
  4. การ์ดและไวลด์การ์ด
← กลับไปที่ Python Academy