1. أساسيات التفرع الشرطي في Python
تُستخدم لغة Python على نطاق واسع كلغة برمجة بسيطة وقوية، ويُعتبر التفرع الشرطي جزءًا أساسيًا للتحكم في سير عمل البرنامج. في هذه المقالة، نشرح أساسيات التفرع الشرطي في Python وكذلك الطرق البديلة لجملة switch
.
ما هو التفرع الشرطي في Python؟
التفرع الشرطي في Python يعني التحكم في تدفق البرنامج بناءً على شرط معين. على سبيل المثال، عند تنفيذ معالجة مختلفة حسب قيمة متغير، يتم استخدام التفرع الشرطي. في Python نستخدم جملة if
لتحقيق ذلك.
البنية الأساسية لجمل if-elif-else
يُكتب التفرع الشرطي في Python باستخدام جملة if
كما يلي:
x = 10
if x > 5:
print("x أكبر من 5")
elif x == 5:
print("x يساوي 5")
else:
print("x أصغر من 5")
في هذا المثال، إذا كانت قيمة x
أكبر من 5 سيتم طباعة “x أكبر من 5″، وإذا لم يتحقق الشرط فسيتم التحقق من الشرط التالي وهكذا. يمكن إضافة المزيد من elif
للتعامل مع حالات إضافية.
لماذا لا توجد جملة switch في Python؟
في العديد من لغات البرمجة توجد جملة switch
لتبسيط التفرع الشرطي، لكن Python لا تحتوي عليها. السبب هو أن Python تشجع على كتابة كود بسيط وواضح، وتعتبر أن if-elif-else
كافٍ لتحقيق نفس الوظائف بدون تعقيد إضافي.

2. سبب غياب switch في Python
صمم مطورو Python اللغة لتكون بسيطة وسهلة الفهم، ولذلك تجنبوا إضافة تراكيب نحوية معقدة مثل switch
. فقد اعتبروا أن if-elif-else
كافية لاستبدالها.
فلسفة Python: البساطة والوضوح
تعتمد فلسفة Python على مبدأ “البساطة أفضل”. لذلك تم تبني أسلوب تجنب التراكيب الطويلة والمعقدة، والاكتفاء باستخدام if-elif-else
بمرونة.
استخدام if-elif-else للتفرع الشرطي
يمكن لجملة if-elif-else
أن تحقق نفس وظائف switch
. على سبيل المثال، عند تنفيذ تعليمات مختلفة حسب اليوم:
day = "الثلاثاء"
if day == "الاثنين":
print("اليوم هو الاثنين")
elif day == "الثلاثاء":
print("اليوم هو الثلاثاء")
else:
print("اليوم غير صالح")
يمكن بهذه الطريقة كتابة التفرعات بسهولة، لكن عند زيادة الشروط قد يصبح الكود مطولًا مما يستدعي حلولاً أكثر كفاءة.
3. طرق بديلة لجملة switch في Python
بما أن Python لا تحتوي على switch
، يمكن استخدام طرق بديلة للتفرع. فيما يلي أكثر الطرق شيوعًا.
استخدام القواميس (dict)
من الطرق البديلة استخدام نوع البيانات dict
(القاموس) لتنفيذ وظائف مشابهة لـ switch
.
def case_one():
return "هذه هي الحالة 1"
def case_two():
return "هذه هي الحالة 2"
switch_dict = {
1: case_one,
2: case_two
}
x = 1
print(switch_dict.get(x, lambda: "حالة غير صالحة")())
بهذا الأسلوب يمكن ربط المفاتيح بالدوال، مما يجعل الكود أبسط وأكثر قابلية للقراءة مقارنة بـ if-elif-else
.
مزايا وعيوب استخدام القواميس
يساعد القاموس على تحسين وضوح الكود وإدارة الحالات بشكل أفضل، لكنه غير مناسب عند وجود شروط معقدة، حيث يظل if-elif-else
أفضل.

4. استخدام match في Python 3.10 فما فوق
اعتبارًا من Python 3.10 تم تقديم جملة match
، وهي بديل قريب من switch
وتسمح بتنفيذ التفرع عبر “مطابقة الأنماط” (Pattern Matching).
أساسيات match
تعمل جملة match
على مقارنة القيمة مع عدة حالات وتنفيذ أول حالة مطابقة.
def get_grade(score):
match score:
case 90 <= score <= 100:
return "A"
case 80 <= score < 90:
return "B"
case _:
return "F"
grade = get_grade(85)
print(grade)
بهذا الشكل يمكن كتابة شروط متعددة بشكل أوضح وأكثر قوة.
5. دليل استخدام كل طريقة
الطرق الثلاثة (if-elif-else
، القواميس، match
) لكل منها مميزات. إليك كيفية الاختيار:
عندما تكون الشروط قليلة
استخدم if-elif-else
، فهي الأسهل والأكثر وضوحًا في البرامج الصغيرة.
عندما تكون الشروط كثيرة
عند وجود حالات متعددة أو استدعاء دوال مختلفة، فإن القواميس توفر كودًا أكثر تنظيمًا وقابلية للصيانة.
عندما تكون الشروط معقدة أو تتطلب مطابقة أنماط
في Python 3.10 أو أحدث، يُفضل استخدام match
لأنها تدعم التفرعات المعقدة ومطابقة الأنماط بكفاءة عالية.