English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا المقال، ستتعلم كيفية تقسيم مكتبات الكود إلى وحدات نظيفة ومتاحة باستخدام حزم بايثون. بالإضافة إلى ذلك، ستتعلم كيفية استيراد واستخدام حزمك الخاصة أو الحزم الثالثة في برنامج بايثون.
لا نستخدم عادةً تخزين جميع الملفات في نفس المكان. نستخدم بنية هندسية مرتبة للدلائل لسهولة الوصول.
المستندات المشابهة تُخزن في نفس الدليل، مثلًا، يمكننا الاحتفاظ بجميع الأغاني في مجلد "music". بنفس الطريقة، يحتوي بايثون على مكتبات للاستخدام في الدلائل وملفاتالمكون.
مع تزايد حجم تطبيقنا بزيادة كبيرة، ومع وجود العديد من المكونات، سنضع المكونات المشابهة في حزمة واحدة، والمكونات المختلفة في حزم مختلفة. هذا يجعل المشروع (التطبيق) سهل التχείير ويجعل المفاهيم واضحة.
بالمثل، نظرًا لأن الدلائل يمكن أن تحتوي على دلائل فرعية ومستندات، يمكن للحزم في Python أن تحتوي على حزم فرعية ومكونات.
يجب أن يحتوي الدليل على ملف __init__.py حتى يتمكن Python من اعتباره حزمة. يمكن ترك هذا الملف فارغًا، ولكننا عادة ما نضع كود التمهيد للحزمة في هذا الملف.
هذا مثال. لنفترض أننا نعمل على تطوير لعبة، فإن تنظيم الحزم والمكونات كما يلي.
يمكننا استخدام عمود النقاط (.) لاستيراد الوحدات من الحزمة.
على سبيل المثال، إذا كنت ترغب في استيراد وحدة start في المثال السابق، اتبع الخطوات التالية.
استيراد Game.Level.start
الآن، إذا كان هذا الوحدة يحتوي على وظيفة تُدعى select_difficulty()وظيفة، يجب علينا استخدام الاسم الكامل لتسمية الوظيفة.
Game.Level.start.select_difficulty(2)
إذا كان هذا التركيب يبدو طويلاً جدًا، يمكننا استيراده كما يلي دون إضافة بادئة الحزمة.
من Game.Level استيراد start
الآن يمكننا استدعاء الوظيفة بسهولة كما يلي.
start.select_difficulty(2)
هناك طريقة أخرى لاستيراد الوظائف (أو الفئات أو المتغيرات) من وحدات الحزمة كما يلي.
من Game.Level.start استيراد select_difficulty
الآن يمكننا استدعاء هذه الوظيفة مباشرة.
select_difficulty(2)
على الرغم من بساطته، لا يُنصح باستخدام هذا الأسلوب. استخدم الكاملمجال الأسماءلتفادي التشويه وتجنب تصادم الأسماء المميزة المتشابهة.
عند استيراد حزمة، يبحث Python عن قائمة الدلائل المحددة في sys.path، مثلمسار البحث عن الوحدات.