أساسيات match وcase
فرّع التنفيذ وفق أنماط القيم
أساسيات match وcase درس مجاني في Python Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Python Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Python Academy 4 دروس في المجموع.
مطابقة الأنماط البنيوية
قدّمت Python 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 قيمة
إن 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))موزّع أوامر عملي
تتألق مطابقة الأنماط عند استخدامها كموزّع أوامر، إذ تحوّل سلسلة طويلة من عبارات if إلى جدول واضح من الحالات.
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عبارة وليست تعبيرًا.
الأسئلة الشائعة
هل درس «أساسيات match وcase» مجاني؟
نعم — نص درس «أساسيات match وcase» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Python Academy 4 دروس في المجموع.
ماذا ستتعلم في «أساسيات match وcase»؟
فرّع التنفيذ وفق أنماط القيم تتمرن على Python Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Python Academy؟
لا تُشترط خبرة سابقة. Python Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «أساسيات match وcase»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Python Academy هذا؟
نعم. كل درس في Python Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أساسيات match وcase
- مطابقة التسلسلات والتعيينات
- أنماط الفئات
- الحواجز والأنماط الشاملة