0Pricing
Python Academy · درس

الحواجز والأنماط الشاملة

أضف الشروط والحالات الشاملة

الحواجز والأنماط الشاملة درس مجاني في Python Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Python Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Python Academy 4 دروس في المجموع.

تحسين المطابقات

لا يكفي النمط البنيوي أحيانًا، بل تحتاج أيضًا إلى شرط. تضيف الحواجز اختبار if إلى الحالة، بينما توفر الأنماط الشاملة طرقًا مرنة لالتقاط كل الحالات.

إضافة حاجز

اكتب if <condition> بعد النمط. ولا تطابق الحالة إلا عندما يتوافق النمط ويكون الحاجز صحيحًا.

n = 7

match n:
    case x if x < 0:
        print('negative')
    case x if x == 0:
        print('zero')
    case x if x > 0:
        print('positive')

تستخدم الحواجز الأسماء الملتقطة

يمكن للحاجز الإشارة إلى المتغيرات التي ربطها النمط. وهنا يجري التحقق من مساواة الزوج الملتقط.

point = [3, 3]

match point:
    case [x, y] if x == y:
        print('on the diagonal')
    case [x, y]:
        print('off the diagonal')

عندما يفشل الحاجز

إذا تطابقت البنية لكن كان الحاجز خاطئًا، فإن المطابقة تستمر إلى الحالة التالية بدلًا من التوقف.

value = 5

match value:
    case n if n > 100:
        print('big')
    case n:
        print('fell through to here:', n)

الحواجز مع أنماط الفئات

تتوافق الحواجز مع أي نوع من الأنماط، بما في ذلك أنماط الفئات، لتحديد شروط دقيقة على سمات الكائنات.

from dataclasses import dataclass

@dataclass
class Order:
    total: float

def discount(order):
    match order:
        case Order(total=t) if t > 100:
            return 'free shipping'
        case Order():
            return 'standard shipping'

print(discount(Order(150)))
print(discount(Order(50)))

مراجعة النمط الشامل

تطابق الشرطة السفلية المفردة _ أي شيء ولا تربط شيئًا. وعند استخدامها كحالة أخيرة، فإنها تتولى كل ما لم تطابقه الحالات السابقة.

x = 'unexpected'

match x:
    case 'a':
        print('letter a')
    case _:
        print('catch-all')

الالتقاط مقابل النمط الشامل

يطابق الالتقاط المسمّى أي شيء أيضًا، لكنه يحتفظ بالقيمة، بينما يتجاهلها _. استخدم اسمًا عندما تحتاج إلى القيمة داخل جسم الحالة.

value = 42

match value:
    case 0:
        print('zero')
    case other:        # capture: keeps the value
        print('value was', other)

الأنماط الشاملة داخل الأنماط

يمكن أن تظهر الشرطة السفلية داخل أنماط أكبر لتجاهل الأجزاء التي لا تهمك.

record = ('user', 42, 'ignore_me')

match record:
    case ('user', user_id, _):
        print('user id:', user_id)

دمج OR والحواجز والأنماط الشاملة

يمكن تركيب هذه الميزات معًا. إذ يوفر نمط OR، يليه حاجز، ثم نمط شامل أخير، مصنّفًا تعبيريًا.

def classify(n):
    match n:
        case 0 | 1:
            return 'binary digit'
        case x if x % 2 == 0:
            return 'even'
        case _:
            return 'odd'

print(classify(0))
print(classify(4))
print(classify(7))

الشمول

على خلاف بعض اللغات، لا تُلزم Python عبارة match بأن تكون شاملة لجميع الحالات. فإذا لم تطابق أي حالة، فلا تفعل العبارة شيئًا ببساطة. أضف case _ أخيرًا عندما تريد ضمان تنفيذ فرع دائمًا.

color = 'purple'
result = 'no match'

match color:
    case 'red':
        result = 'stop'
    case 'green':
        result = 'go'

print(result)

الحواجز على البيانات المفككة

تتوافق الحواجز طبيعيًا مع أنماط التسلسلات والتعيينات، ما يتيح لك اختبار القيم التي استخرجتها للتو.

data = [10, 20]

match data:
    case [a, b] if a + b > 25:
        print('sum is large')
    case [a, b]:
        print('sum is small')

تحقق سريع

ماذا يحدث عندما يطابق النمط البنية، لكن يكون شرط الحاجز خاطئًا؟

مراجعة

لقد تعلمت إضافة الشروط والحالات التي تلتقط كل ما تبقى.

  • تضيف الحواجز اختبار if يمكنه استخدام الأسماء الملتقطة.
  • ينتقل التنفيذ إلى الحالة التالية عند فشل الحاجز.
  • يطابق _ القيمة ويتجاهلها، بينما يلتقط الاسم القيمة.
  • أضف case _ أخيرًا لضمان تنفيذ فرع.

الأسئلة الشائعة

هل درس «الحواجز والأنماط الشاملة» مجاني؟

نعم — نص درس «الحواجز والأنماط الشاملة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Python Academy 4 دروس في المجموع.

ماذا ستتعلم في «الحواجز والأنماط الشاملة»؟

أضف الشروط والحالات الشاملة تتمرن على Python Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Python Academy؟

لا تُشترط خبرة سابقة. Python Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «الحواجز والأنماط الشاملة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Python Academy هذا؟

نعم. كل درس في Python Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أساسيات match وcase
  2. مطابقة التسلسلات والتعيينات
  3. أنماط الفئات
  4. الحواجز والأنماط الشاملة
← العودة إلى Python Academy