القائمة الرئيسية

الصفحات

دورة البرمجة بلغة بايثون - الدرس الثاني والعشرون (حزم بايثون Python Package)

دورة البرمجة بلغة بايثون - الدرس الثاني والعشرون (حزم بايثون Python Package)

دورة البرمجة بلغة بايثون - الدرس الثاني والعشرون (حزم بايثون Python Package)

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


ما هي الحزم؟

لا نقوم عادةً بتخزين جميع ملفاتنا على جهاز الكمبيوتر الخاص بنا في نفس الموقع. نستخدم تسلسلاً هرميًا منظمًا جيدًا للأدلة لتسهيل الوصول إليها.


يتم الاحتفاظ بالملفات المماثلة في نفس الدليل ، على سبيل المثال ، قد نحتفظ بجميع الأغاني في دليل "الموسيقى". على غرار ذلك ، تمتلك بايثون حزمًا للأدلة والوحدات النمطية للملفات.


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


وبالمثل ، نظرًا لأن الدليل يمكن أن يحتوي على أدلة فرعية وملفات ، يمكن أن تحتوي حزمة بايثون على حزم فرعية ووحدات نمطية.


يجب أن يحتوي الدليل على ملف يسمى __init__.py لكي تعتبره بايثون حزمة. يمكن ترك هذا الملف فارغًا ولكننا بشكل عام نضع رمز التهيئة لتلك الحزمة في هذا الملف.


هنا مثال. لنفترض أننا نطور لعبة. يمكن أن يكون التنظيم المحتمل للحزم والوحدات كما هو موضح في الشكل أدناه.

هيكل وحدة الحزمة في برمجة بايثون



استيراد وحدة من الحزمة

يمكننا استيراد وحدات من الحزم باستخدام عامل التشغيل النقطة (.).


على سبيل المثال ، إذا أردنا استيراد وحدة البداية في المثال أعلاه ، فيمكن القيام بذلك على النحو التالي:

import Game.Level.start


الآن ، إذا كانت هذه الوحدة تحتوي على وظيفة تسمى ()select_difficulty ، يجب أن نستخدم الاسم الكامل للإشارة إليها.

Game.Level.start.select_difficulty(2)


إذا بدت هذه البنية طويلة ، فيمكننا استيراد الوحدة بدون بادئة الحزمة على النحو التالي:

from Game.Level import start


يمكننا الآن استدعاء الدالة كما يلي:

start.select_difficulty(2)


هناك طريقة أخرى لاستيراد الوظيفة المطلوبة فقط (أو الفئة أو المتغير) من وحدة نمطية داخل الحزمة وهي كما يلي:

from Game.Level.start import select_difficulty


الآن يمكننا استدعاء هذه الوظيفة مباشرة.

select_difficulty(2)


على الرغم من أنها أسهل ، لا ينصح بهذه الطريقة. يؤدي استخدام مساحة الاسم الكاملة إلى تجنب الالتباس ومنع اصطدام اسمين معرّفين متشابهين.


أثناء استيراد الحزم ، تبحث بايثون في قائمة الأدلة المحددة في sys.path ، على غرار مسار بحث الوحدة النمطية.



reaction:
Ahmed Taher
Ahmed Taher
مدون من العراق . احب البرمجة وكل ما يتعلق بالشبكات والسيرفرات وامن المعلومات . واسعى الى توفير جميع المصادر والمواد للامتحانات الدولية.

تعليقات