حاول/باستثناء مقابل إذا/إلس: ما هو النهج المفضل؟
عند العمل مع الاستثناءات في بايثون، غالبًا ما يواجه المطورون معضلة ما إذا كان سيتم اختبار الصلاحية أو محاولة اتخاذ إجراء والتعامل مع أي استثناء ناتج. تتعمق هذه المقالة في الفروق الدقيقة لكل نهج، وتقدم إرشادات وأمثلة لإرشاد عملية اتخاذ القرار.
حاول/باستثناء: قبول الاستثناءات
وفقًا لـ PEP 20، الأخطاء لا ينبغي أبدا أن تمر بصمت ما لم يتم إسكاتها صراحة. في حين أن هذا قد يشير إلى أن استخدام كتلة المحاولة/باستثناء التعامل مع الاستثناءات أمر مقبول، فمن المهم ملاحظة طبيعة الاستثناء الذي تم اكتشافه.يعد أسلوب المحاولة/باستثناء مفيدًا عندما يكون الاستثناء استثنائيًا حقًا، أو يحدث. فقط في حالات نادرة. وهذا يسمح بتنفيذ أسرع من خلال التخلص من عمليات البحث غير الضرورية. بالإضافة إلى ذلك، فهو يتوافق مع فلسفة بايثون الخاصة بـ EAFP (طلب المغفرة أسهل من الإذن).التسريعات والرمز الأنظف
المحاولة/باستثناء يمكن أن تؤدي إلى السرعة -ups عندما تكون الحالة الاستثنائية نادرة ويتطلب التحقق من حدوثها عمليات بحث إضافية. على سبيل المثال، تكون محاولة الوصول إلى عنصر في فهرس معين ضمن قائمة طويلة أسرع باستخدام المحاولة/باستثناء مقارنة بالتحقق مما إذا كان الفهرس ضمن الحدود باستخدام if/else.علاوة على ذلك، تعمل المحاولة/باستثناء على تعزيز التعليمات البرمجية الأنظف من خلال تكثيف العديد من العبارات الشرطية في كتلة واحدة، مما يعزز إمكانية القراءة ويقلل عدد الأسطر.مثال:ضع في اعتبارك مقتطفات التعليمات البرمجية التالية:
# نهج إذا/آخر إذا لين (my_list) >= 4: س = my_list[3] آخر: س = 'NO_ABC' # حاول/باستثناء النهج يحاول: س = my_list[3] باستثناء خطأ الفهرس: x = 'NO_ABC'# If/else approach
if len(my_list) >= 4:
x = my_list[3]
else:
x = 'NO_ABC'
# Try/except approach
try:
x = my_list[3]
except IndexError:
x = 'NO_ABC'
الاستنتاجعلى الرغم من أن كل من المحاولة/باستثناء وif/else لها مزاياها، إلا أن المحاولة/باستثناء هي المفضلة بشكل عام عندما تؤدي إلى تحسينات في السرعة أو كود أكثر نظافة أو تتعامل مع حالات استثنائية دون التضحية برؤية الاستثناء. من خلال تبني الاستثناءات واستخدامها بحكمة، يمكن لمطوري بايثون إنشاء تعليمات برمجية قوية وسهلة القراءة وفعالة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3