0Pricing
Python Academy · درس

مطابقة التسلسلات والتعيينات

فكّك القوائم والقواميس

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

أنماط تفكّك البنية

تكمن القوة الحقيقية في match في تفكيك البنية. إذ تتيح لك أنماط التسلسلات والتعيينات التحقق من بنية البيانات واستخراج القيم في الوقت نفسه.

مطابقة قائمة ذات طول ثابت

يطابق نمط التسلسل بين قوسين مربعين قائمة أو tuple بالطول المحدد نفسه، ويربط كل عنصر باسم.

point = [3, 4]

match point:
    case [x, y]:
        print('x =', x, 'y =', y)

يجب أن يتطابق الطول

لا يطابق نمط مكوّن من عنصرين تسلسلاً مكوّنًا من ثلاثة عناصر. إذ تتحقق كل حالة من البنية والطول معًا.

data = [1, 2, 3]

match data:
    case [a, b]:
        print('pair')
    case [a, b, c]:
        print('triple:', a, b, c)

الخلط بين القيم الحرفية وعمليات الالتقاط

يمكنك تثبيت بعض المواضع على قيم حرفية والتقاط قيم المواضع الأخرى. ولا يطابق هذا إلا التسلسلات التي تبدأ بالقيمة الحرفية المحددة.

command = ['move', 10, 20]

match command:
    case ['move', dx, dy]:
        print('moving by', dx, dy)
    case ['stop']:
        print('stopping')

التقاط بقية العناصر باستخدام *

يلتقط الاسم المسبوق بنجمة أي عناصر متبقية في صورة قائمة، مثل فك التعبئة الموسّع.

items = [1, 2, 3, 4, 5]

match items:
    case [first, *rest]:
        print('first:', first)
        print('rest:', rest)

الأنماط الفارغة والمفردة

تتعامل أنماط التسلسلات مع الحالات الخاصة بوضوح: قائمة فارغة، أو عنصر واحد، أو عناصر كثيرة.

def describe(seq):
    match seq:
        case []:
            return 'empty'
        case [x]:
            return 'one: ' + str(x)
        case [x, *rest]:
            return 'many, first ' + str(x)

print(describe([]))
print(describe([9]))
print(describe([1, 2, 3]))

مطابقة القواميس

يستخدم نمط التعيين الأقواس المعقوفة. ويتحقق من وجود المفاتيح المحددة ويربط قيمها. ويُسمح بوجود مفاتيح إضافية في القيمة المُختبرة.

event = {'type': 'click', 'x': 10, 'y': 20}

match event:
    case {'type': 'click', 'x': x, 'y': y}:
        print('click at', x, y)

مطابقة جزئية للمفاتيح

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

event = {'type': 'key', 'code': 'A', 'extra': 1}

match event:
    case {'type': 'key', 'code': code}:
        print('key pressed:', code)

التقاط المفاتيح المتبقية

استخدم **rest لالتقاط جميع أزواج المفتاح والقيمة غير المطابقة داخل قاموس.

event = {'type': 'move', 'dx': 5, 'dy': 7}

match event:
    case {'type': 'move', **rest}:
        print('move details:', rest)

تداخل الأنماط

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

data = {'name': 'grid', 'size': [3, 4]}

match data:
    case {'name': name, 'size': [w, h]}:
        print(name, 'is', w, 'by', h)

السلاسل ليست تسلسلات هنا

لا تطابق أنماط التسلسلات السلاسل النصية أو وحدات البايت عمدًا، رغم أنها قابلة للتكرار. ويمنع ذلك تفكيك السلسلة حرفًا حرفًا عن طريق الخطأ.

value = 'hi'

match value:
    case [a, b]:
        print('matched as sequence')
    case str():
        print('matched as string')

تحقق سريع

ما الذي يربطه النمط [first, *rest] عند مطابقته مع [1, 2, 3, 4]؟

مراجعة

لقد تعلمت تفكيك بنيتي القوائم والقواميس.

  • تتحقق أنماط التسلسلات من الطول وتربط العناصر.
  • يلتقط *rest عناصر القائمة المتبقية.
  • تطابق أنماط التعيين المفاتيح، ويُسمح بالمفاتيح الإضافية.
  • يلتقط **rest أزواج القاموس المتبقية، ويمكن أن تتداخل الأنماط.

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

هل درس «مطابقة التسلسلات والتعيينات» مجاني؟

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

ماذا ستتعلم في «مطابقة التسلسلات والتعيينات»؟

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

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

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

كم من الوقت يستغرق درس «مطابقة التسلسلات والتعيينات»؟

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

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

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

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

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