7.3 الشِفرة ذات المستوى الأعلى
أهداف التعلم
في نهاية هذا القسم، ينبغي أن تكون قادرًا على
- تحديد الشِفرة التي تُشغَّل كتأثير جانبي للاستيراد.
- شرح الغرض من
if __name__ == "__main__".
الآثار الجانبية
تُعرّف الوَحدات الدوال والثوابت لاستخدامها في البرامج الأخرى. عند استيراد وَحدة، يتم تشغيل جميع الشِفرة الموجودة في الوَحدة من الأعلى إلى الأسفل. إذا لم تُصمّم الوَحدة بعناية، فقد يتم تشغيل شِفرة غير مقصودة كتأثير جانبي. تكون الشِفرة غير المقصودة عادةً في المستوى الأعلى، خارج تعريفات الدوال.
مفاهيم تطبيقية
الآثار الجانبية
استخدام __name__
غالبًا ما تتضمن وَحدات بايثون التعليمة if __name__ == "__main__" لمنع الآثار الجانبية. تكون هذه التعليمة صحيحة عند تشغيل الوَحدة كبرنامج، وخطأ عند استيراد الوَحدة.
مفاهيم تطبيقية
استخدام __name__
استكشاف إضافي
المُتغيِّرات التي تبدأ وتنتهي بشرطتين سفليتين مزدوجتين لها معنى خاص في بايثون. تُسمى الشرطتان السفليتان المزدوجتان بشكل غير رسمي مُتغيِّرات "دندر" أو "سحرية". تتضمن الأمثلة الأخرى __doc__ (سلسلة التوثيق للوَحدة) و __file__ (اسم الملف للوَحدة).
جرّب بنفسك
الآثار الجانبية
هذا التمرين هو استمرار لتمرين "الاستيرادات المفقودة". سابقًا، أضفت تعليمات الاستيراد المفقودة إلى أعلى البرنامج. الآن، عدّل البرنامج لمنع الآثار الجانبية عند استيراد البرنامج كوحدة:
- أضف
if __name__ == "__main__"في النهاية. - انقل جميع شِفرة الاختبار تحت تعليمة
ifتلك.
يجب أن يعمل البرنامج بدون أخطاء وينتج نفس الإخراج كما كان من قبل.
جرّب بنفسك
اختبار التحويل
هذا التمرين هو استمرار لتمرين "وَحدة التحويل". سابقًا، كتبت الدوال cel2fah و fah2cel و km2mi و mi2km. اكتب شِفرة اختبار في نهاية conversion.py (الملف الأصلي) لكل من هذه الدوال. يجب ألا تعمل شِفرة الاختبار كتأثير جانبي عند استيراد conversion بواسطة برامج أخرى. عند تشغيل conversion.py كبرنامج رئيسي، يجب أن يكون خرج الاختبار كالتالي:
0 C is 32 F
5 C is 41 F
10 C is 50 F
15 C is 59 F
20 C is 68 F
20 F is -7 C
25 F is -4 C
30 F is -1 C
35 F is 2 C
40 F is 4 C
1 km is 0.6 mi
2 km is 1.2 mi
3 km is 1.9 mi
4 km is 2.5 mi
5 km is 3.1 mi
5 mi is 8.0 km
6 mi is 9.7 km
7 mi is 11.3 km
8 mi is 12.9 km
9 mi is 14.5 km