พื้นฐาน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พื้นฐาน match และ case
- การจับคู่ลำดับและแมป
- รูปแบบคลาส
- การ์ดและไวลด์การ์ด