كيفية تنفيذ وظائف حالة التبديل في بايثون؟ [2022]

نشرت: 2021-01-08

جدول المحتويات

مقدمة

هل تساءلت يومًا ما إذا كان هناك بديل لكتابة عبارات If-else المعقدة في بايثون؟ إذا كنت لا تريد أن تؤدي عبارات "If" المتعددة إلى تشويش التعليمات البرمجية الخاصة بك ، فيجب أن تفكر في استخدام عبارة Switch Case التي توفر طريقة أنظف وأسرع لتنفيذ تدفق التحكم في التعليمات البرمجية الخاصة بك. على عكس C ++ و Java و Ruby ولغات البرمجة الأخرى ، لا توفر Python بيان حالة التبديل ، ولكنها تقدم بعض الحلول لجعل هذا البيان يعمل.

على سبيل المثال ، تتيح لك Python إنشاء مقتطفات التعليمات البرمجية التي تعمل مثل عبارات حالة Python Switch في لغات البرمجة الأخرى. ستتعرف على المزيد حول طرق تنفيذ بيانات حالة التبديل لاحقًا في هذه المدونة. إذا كنت مهتمًا بمعرفة المزيد عن Python ، فراجع دورات علوم البيانات لدينا.

ما هو بيان التبديل في بايثون؟

بشكل عام ، المفتاح هو آلية تحكم تختبر القيمة المخزنة في متغير وتنفذ عبارات الحالة المقابلة. يقدم بيان حالة التبديل تدفق التحكم في برنامجك ويضمن عدم تشويش التعليمات البرمجية الخاصة بك بعبارات "if" المتعددة.

ومن ثم ، تبدو شفرتك دقيقة وشفافة للمشاهدين. إنها ميزة برمجة رائعة يستخدمها المبرمجون لتنفيذ تدفق التحكم في التعليمات البرمجية الخاصة بهم. تعمل عبارة تبديل الحالة من خلال مقارنة القيم المحددة في عبارات الحالة مع المتغيرات في التعليمات البرمجية الخاصة بك.

كيفية تنفيذ بيان حالة Python Switch

إذا كنت قد قمت دائمًا بالترميز بلغات مثل C ++ أو Java ، فقد تجد أنه من الغريب أن Python لا تحتوي على بيان حالة التبديل. بدلاً من ذلك ، تقدم Python العديد من الحلول مثل القاموس أو فئات Python أو وظائف Python lambda لتنفيذ عبارات حالة التبديل.

إذا كنت تريد معرفة السبب الدقيق وراء عدم وجود بيان حالة التبديل في Python ، فعليك التحقق من PEP 3103 .

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

في المثال أدناه ، استخدمنا لغة البرمجة C

التبديل (monthOfYear) {

حالة 1:

printf ("٪ s" ، يناير) ؛

استراحة؛

الحالة 2:

printf ("٪ s" ، فبراير) ؛

استراحة؛

الحالة 3:

printf ("٪ s" ، مارس) ؛

استراحة؛

الحالة 4:

printf ("٪ s" ، أبريل) ؛

استراحة؛

الحالة 5:

printf ("٪ s" ، مايو) ؛

استراحة؛

الحالة 6:

printf ("٪ s" ، يونيو) ؛

استراحة؛

الحالة 7:

printf ("٪ s" ، يوليو) ؛

استراحة؛

الحالة 8:

printf ("٪ s" ، أغسطس) ؛

استراحة؛

الحالة 9:

printf ("٪ s" ، سبتمبر) ؛

استراحة؛

الحالة 10:

printf ("٪ s" ، أكتوبر) ؛

استراحة؛

الحالة 11:

printf ("٪ s" ، تشرين الثاني (نوفمبر)) ؛

استراحة؛

الحالة 12:

printf (“٪ s” ، ديسمبر) ؛

استراحة؛

إفتراضي:

printf (شهر غير صحيح) ؛

استراحة؛

}

الآن ، دعنا ننتقل إلى بدائل دالة حالة تبديل Python ونفهم كيف تعمل هذه البدائل بمساعدة الأمثلة.

اقرأ: الفرص الوظيفية في بايثون: كل ما تحتاج إلى معرفته

باستخدام تعيين القاموس

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

يوضح المثال التالي تنفيذ بيان حالة التبديل باستخدام قاموس. هنا ، نحدد شهرًا وظيفيًا () لطباعة أي شهر ، شهر من السنة.

أولاً ، ابدأ بإنشاء عبارات حالة واكتب وظائف فردية لكل حالة. تأكد من كتابة دالة تعالج الحالة الافتراضية.

ديف يناير ():

العودة "يناير"

فبراير شباط ():

إرجاع "فبراير"

مسيرة def ():

عودة "مسيرة"

ديف أبريل ():

العودة "أبريل"

مواطنه قد ():

عودة "يجوز"

ديف يونيو ():

العودة "يونيو"

ديف يوليو ():

العودة "يوليو"

مواطنه أغسطس ():

العودة "أغسطس"

def سبتمبر ():

العودة "سبتمبر"

def أكتوبر ():

العودة "أكتوبر"

def نوفمبر ():

العودة "نوفمبر"

def ديسمبر ():

العودة "ديسمبر"

الافتراضي def ():

إرجاع "شهر غير صحيح"

بعد ذلك ، قم بإنشاء كائن قاموس في Python وقم بتخزين جميع الوظائف التي حددتها في برنامجك.

الجلاد = {

0: "يناير"،

1: "فبراير" ،

2: "مسيرة" ،

3: "أبريل" ،

4: "يجوز" ،

5: "يونيو" ،

6: "يوليو" ،

7: "أغسطس" ،

8: "سبتمبر" ،

9: أكتوبر ،

10: "نوفمبر" ،

11: "ديسمبر"

}

أخيرًا ، قم بإنشاء وظيفة تبديل في برنامجك والتي يجب أن تقبل عددًا صحيحًا كمدخل ، وتنفذ بحثًا في القاموس ، وتستدعي الوظائف المقابلة.

شهر def (monthOfYear):

العودة switcher.get (monthOfYear ، افتراضي) ()

سيبدو الرمز الكامل هكذا

ديف يناير ():

العودة "يناير"

فبراير شباط ():

إرجاع "فبراير"

مسيرة def ():

عودة "مسيرة"

ديف أبريل ():

العودة "أبريل"

مواطنه قد ():

عودة "يجوز"

ديف يونيو ():

العودة "يونيو"

ديف يوليو ():

العودة "يوليو"

مواطنه أغسطس ():

العودة "أغسطس"

def سبتمبر ():

العودة "سبتمبر"

def أكتوبر ():

العودة "أكتوبر"

def نوفمبر ():

العودة "نوفمبر"

def ديسمبر ():

العودة "ديسمبر"

الافتراضي def ():

إرجاع "شهر غير صحيح"

الجلاد = {

0: "يناير"،

1: "فبراير" ،

2: "مسيرة" ،

3: "أبريل" ،

4: "يجوز" ،

5: "يونيو" ،

6: "يوليو" ،

7: "أغسطس" ،

8: "سبتمبر" ،

9: أكتوبر ،

10: "نوفمبر" ،

11: "ديسمبر"

}

شهر def (monthOfYear):

العودة switcher.get (monthOfYear ، افتراضي) ()

طباعة (مفتاح (1))

طباعة (مفتاح (0))

الكود أعلاه يطبع الإخراج التالي

شهر فبراير

كانون الثاني

اقرأ أيضًا: 42 فكرة مثيرة حول مشروع Python وموضوعات للمبتدئين

استخدام فئات بايثون

يمكنك أيضًا استخدام أصناف Python كبديل لتنفيذ عبارات حالة التبديل. الفئة هي مُنشئ كائن له خصائص وطرق. دعونا نفهم هذا بشكل أكبر بمساعدة نفس المثال أعلاه. هنا ، سنحدد طريقة التبديل داخل فئة تبديل Python.

مثال

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

فئة PythonSwitch:

شهر def (ذاتي ، شهر من السنة):

الافتراضي = "شهر غير صحيح"

إرجاع getattr (self، 'case_' + str (monthOf Year)، lambda: افتراضي) ()

ملاحظة: في المثال أعلاه ، استخدمنا شيئين: طريقة الكلمة الرئيسية lambda و getattr ().

  • نستخدم الكلمة الأساسية lambda لتحديد وظيفة مجهولة في Python. تستدعي الكلمة الأساسية Lambda الوظيفة الافتراضية عندما يقوم المستخدم بإدخال إدخال غير صالح.
  • تُستخدم طريقة getattr () لاستدعاء دالة في بايثون.

الآن ، قم بإنشاء وظائف فردية لكل حالة.

ديف يناير (ذاتي):

العودة "يناير"

فبراير (ذاتي):

إرجاع "فبراير"

مسيرة مواطنه (النفس):

العودة "مارس"

ديف أبريل (ذاتي):

العودة "أبريل"

مواطنه قد (الذات):

العودة "مايو"

ديف يونيو (ذاتي):

العودة "يونيو"

ديف يوليو (ذاتي):

العودة "يوليو"

مواطنه أغسطس (النفس):

عودة "أغسطس"

def سبتمبر (ذاتي):

العودة "سبتمبر"

شهر أكتوبر (ذاتي):

العودة "أكتوبر"

def نوفمبر (ذاتي):

العودة "نوفمبر"

def ديسمبر (ذاتي):

العودة "ديسمبر"

سيبدو الرمز الكامل هكذا

فئة PythonSwitch:

شهر def (ذاتي ، شهر من السنة):

الافتراضي = "شهر غير صحيح"

إرجاع getattr (self، 'case_' + str (monthOf Year)، lambda: افتراضي) ()

ديف يناير (ذاتي):

العودة "يناير"

فبراير (ذاتي):

إرجاع "فبراير"

مسيرة مواطنه (النفس):

العودة "مارس"

ديف أبريل (ذاتي):

العودة "أبريل"

مواطنه قد (الذات):

العودة "مايو"

ديف يونيو (ذاتي):

العودة "يونيو"

ديف يوليو (ذاتي):

العودة "يوليو"

مواطنه أغسطس (النفس):

عودة "أغسطس"

def سبتمبر (ذاتي):

العودة "سبتمبر"

شهر أكتوبر (ذاتي):

العودة "أكتوبر"

def نوفمبر (ذاتي):

العودة "نوفمبر"

def ديسمبر (ذاتي):

العودة "ديسمبر"

my_switch = PythonSwitch ()

طباعة (my_switch.month (1))

طباعة (my_switch.month (10))

الكود أعلاه يطبع الإخراج التالي

كانون الثاني

اكتوبر

تحقق من: راتب Python Developer في الهند

خاتمة

في هذه المدونة ، تعرفت على بيانات حالة التبديل ، وما هي بدائل عبارات حالة التبديل ، وكيفية استخدامها. كما هو موضح أعلاه ، لا تحتوي Python على وظيفة حالة تبديل مدمجة ، ولكن يمكنك دائمًا استخدام هذه البدائل لجعل الكود الخاص بك يبدو أنيقًا ونظيفًا والحصول على أداء أفضل.

إذا كنت مهتمًا بالتعرف على علوم البيانات ، فراجع برنامج IIIT-B & upGrad التنفيذي PG في علوم البيانات الذي تم إنشاؤه للمهنيين العاملين ويقدم أكثر من 10 دراسات حالة ومشاريع ، وورش عمل عملية عملية ، وإرشاد مع خبراء الصناعة ، 1 - في 1 مع موجهين في الصناعة ، أكثر من 400 ساعة من التعلم والمساعدة في العمل مع الشركات الكبرى.

ميّز بين قاموس عادي وقاموس بايثون.

قاموس Python أو "Dict" عبارة عن بنية بيانات مضمنة في Python تُستخدم لتخزين مجموعة غير مرتبة من العناصر. على عكس هياكل بيانات Python الأخرى التي تخزن قيمًا مفردة ، تخزن بنية بيانات القاموس أزواج القيمة الرئيسية حيث يكون كل مفتاح فريدًا. لا يتذكر ترتيب الإدراج لأزواج القيمة والمفتاح ويتكرر خلال المفاتيح. من ناحية أخرى ، يحتفظ القاموس المطلوب أو OrderedDict بمسار ترتيب الإدراج لأزواج القيمة والمفتاح. كما أنه يستهلك ذاكرة أكثر من القاموس العادي في Python نظرًا لتطبيقه على القائمة المرتبطة بشكل مضاعف. إذا قمت بحذف نفس المفتاح وإعادة إدخاله ، فسيتم إدراجه في موضعه الأصلي حيث يتذكر OrderedDict ترتيب الإدراج.

ما هي عمليات الاسم الذي يجعله خيارًا مناسبًا لاستخدامه في حالات التبديل؟

يتم تنفيذ عمليات متعددة في بايثون. فيما يلي قائمة ببعض العمليات الأكثر شيوعًا التي يقوم بها الزوج الاسمي. يمكن الوصول إلى العناصر الموجودة في المستوى نفسه من خلال فهارسها ، على عكس القاموس. الطريقة البديلة للوصول إلى العناصر هي من خلال اسمها الرئيسي. ترجع الدالة make () اسمًا مضاعفًا. ترجع الدالة _asadict () قاموسًا مرتبًا تم إنشاؤه من القيم المعينة. تأخذ الدالة _replace () اسم مفتاح كوسيطة لها وتغير القيم المعينة لها. ترجع الدالة _fileds () جميع أسماء المفاتيح للمجموعة المسماة المحددة.

متى نفضل قوائم تخزين البيانات؟

تعتبر قائمة Python أفضل بنية بيانات لتخزين البيانات في السيناريوهات التالية - يمكن استخدام القائمة لتخزين قيم مختلفة بأنواع بيانات مختلفة ويمكن الوصول إليها فقط من خلال المؤشرات الخاصة بكل منها. عندما تحتاج إلى إجراء عمليات حسابية على العناصر ، يمكن استخدام قائمة لأنها تتيح لك تشغيل العناصر رياضيًا بشكل مباشر. نظرًا لأنه يمكن تغيير حجم القائمة ، يمكن استخدامها لتخزين البيانات عندما لا تكون متأكدًا من عدد العناصر المراد تخزينها. عناصر القائمة قابلة للتغيير بسهولة ويمكنها أيضًا تخزين العناصر المكررة ، على عكس المجموعة والقاموس.