دورة تطوير بايثون المتقدمة
الفصل
>
المستوى
وحدات الرياضيات
تفحص الكود
الهدف
قم بتفتيش بعض العناصر القديمة المخزنة في العلية عن طريق استخدام فحص الكود لمعرفة ما هي وكيف تُستخدم.
تحتوي العلية على مكتب نادراً ما يُستخدم وهناك بعض الصناديق القديمة التي تحتوي على مقتنيات ثمينة تم نسيانها منذ زمن بعيد. ما لم يُذكر خلاف ذلك أو ما لم توفر مذكرة المعلومات، قد يكون من الصعب أحياناً تحديد العناصر أو الثوابت التي يتم جمعها في الميدان. وليس ذلك فحسب، فقد يكون من الصعب تحديد نطاق الأمور التي يمكنك تحقيقها بكائن معين أو ما هي خصائصه. لمعالجة ذلك يمكننا استخدام فحص الكود.
يتيح لنا فحص الكود تفتيش وتحديد بعض مقاطع الكود وإظهار بعض خصائصها. لهذا سنستخدم أربع (4) دوال فحص مدمجة مع كود بايثون الأساسي: type() , id() , repr() , dir() و help(). تعمل هذه الدوال على النحو التالي:
type(): تُعلمك الدالة بنوع الكائن الذي يتم تمريره كوسيط. على سبيل المثال، إذا وضعت متغيراً كوسيط، ستحدد الدالة الكائن كمتغير.id(): لكل كائن يتم إنشاؤه في بايثون معرف فريد يميّزه داخل الكود. عن طريق تمرير كائن كوسيط لهذه الدالة، ستقوم بإرجاع المعرف الفريد للكائن.repr(): يحول قيمة غير نصية إلى سلسلة، وهو مفيد لتحويل البيانات إلى شكل قابل للقراءة.dir(): يعرض جميع الخصائص التي يمتلكها الكائن، وهو مفيد لمعرفة ما يمكن تحقيقه باستخدام نوع كائن معين.help(): يعرض كل المعلومات المتاحة حول كائن معين، دالة، فئة، إلخ، الموجودة في سجل بايثون.
بالإضافة إلى ذلك، لدينا دالة غير متزامنة جديدة وهي دالة display(). تشبه هذه الدالة دالة read() لكنها تتيح لك عرض بيانات ديناميكية، تماماً مثل دوال فحص الكود التي تنتج بيانات ديناميكية. تكون الصيغة على النحو التالي: await player.display( -data-). ستكون كل هذه الدوال مفيدة لتحليل البيانات، وهذا مفيد عند استخدام الدوال وبدء استيراد دوال جديدة وكذلك لتحليل أي كود نريد تحديد خصائصه.
سنستخدم هذه الدوال لتحديد وتصنيف العناصر المخزنة في العلية. للبدء، توجه إلى علامة X الداكنة فوق السجاد الملون بدءاً بالسجادة الحمراء. هناك ثلاث (3) ثوابت في هذه المنطقة: red_container , green_container , و blue_container، تمثل هذه الثوابت الحاويات في كل صندوق تتوافق مع كل سجادة ملونة.
بالنسبة لكل علامة X، واجه الصندوق واستخدم دالة open() لفتح الصناديق، واستخدم دالة collect() مع الثابت المتوافق مع السجادة الملونة لالتقاطه من الصندوق. استخدم دالة فحص type() لتحديد نوع الثابت الموجود في الصندوق، حيث يكون الناتج بيانات خام ولأجل ذلك نستخدم دالة repr() لتحويلها إلى سلسلة. استخدم دالة speak() لعرض السلسلة الناتجة من دمج الدوال والثابت، على سبيل المثال: player.speak(repr(type(red_container))). ثم تابع باستخدام دالة speak() مع الثابت لتحديد المحتويات مباشرة، على سبيل المثال: player.speak(red_container).
بمجرد جمع وفحص وتحديد جميع الثوابت الثلاثة (3)، توجه إلى علامة X الفاتحة أمام المكتب. قم بإنشاء ثلاث متغيرات باسم: item_id_red , item_id_green , item_id_blue، والتي ستُستخدم لتخزين أرقام الهوية لكل من الثوابت التي جمعتها. استخدم دالة الفحص id() للحصول على الرقم التعريفي الفريد للثابت عن طريق تمريره كوسيط. قم بمطابقة اسم المتغير مع اسم الثابت باستخدام الصيغة التالية كمثال: item_id_red = id(red_container)، وافعل ذلك لجميع المتغيرات والثوابت الثلاثة (3).
بمجرد تعبئة المتغيرات الثلاثة (3)، قم بتخزينها جميعاً في قائمة باسم item_list وعلى علامة X الفاتحة استخدم دالة display() للتأكد من تدوينها في المذكرة على الطاولة، هكذا: await player.display(item_list).
الآن بعد توثيق القائمة، توجه إلى علامة X الداكنة فوق السجادة البنفسجية وواجه المكتب. هنا سنستخدم دالة dir() لتحديد الخصائص المتوفرة للقائمة، ومع ذلك فإن الناتج يكون بيانات خام قد يصعب عرضه. لهذا السبب نستخدم دالة repr() لتحويل البيانات إلى سلسلة قابلة للقراءة. قم بإنشاء متغير باسم item_attributes وخزن السلسلة الناتجة، هكذا: item_attributes = repr(dir(item_list)). وأخيراً، استخدم دالة display() للتأكد من تدوينها في المذكرة على الطاولة.
توجه إلى علامة X الداكنة فوق السجادة البيضاء للقيام بنفس ما فعلته باستخدام dir() ولكن مع help()، حيث سيعرض كل الوثائق المتعلقة باستخدام الكائن. قم بإنشاء متغير باسم item_help وخزن السلسلة الناتجة، هكذا: item_help = repr(help(item_list)). وأخيراً، استخدم دالة read() للتأكد من تدوينها في المذكرة على الطاولة لإكمال المستوى.