‫حتى هذه اللحظة ، تعلمنا بعض الطرق لتنظيم كود بايثون الخاص بنا.
‫أول شيء فعلناه جيدًا ، لقد كتبنا لغة Python في ملف وهو ما ينظمها ، أليس كذلك؟
‫كان رمزنا بالكامل حتى الآن في ملف واحد.
‫لذلك كانت هذه إحدى الطرق التي نظمنا بها الكود الخاص بنا.
‫بعد ذلك ، تعلمنا عن الوظائف ، وتم استخدام الوظائف كطريقة لنا لعدم كتابة التعليمات البرمجية التي نكررها
‫مرارًا وتكرارًا.
‫يمكننا كتابة الدوال التي يمكننا استخدامها في أي مكان نريده في ملفنا حتى نتمكن من استدعاء هذه
‫الوظائف مرارًا وتكرارًا ويمكننا تسمية الوظائف بشكل مناسب حتى يكون رمزنا منطقيًا ، ونقوم بحزمها بشكل جيد
‫لنا لاستخدامها.
‫كل هذه الأشياء كانت مخصصة لنا للحفاظ على نظافة الكود الخاص بنا ، وجعل الكود الخاص بنا أكثر قابلية للصيانة ، وبالتالي الحفاظ
‫على تنظيم الكود الخاص بنا.
‫نظرًا لأننا نكتب المزيد من سطور التعليمات البرمجية ، يصبح من الصعب جدًا الاحتفاظ بكل شيء في ذهنك.
‫إذا انضم أشخاص آخرون إلى فريقك للعمل في مشروعك ، فإنهم يحتاجون إلى طريقة سهلة لمعرفة كيفية عمل
‫الأشياء.
‫لكن لا تزال لدينا مشكلة ، وهذه المشكلة هي أن كل شيء موجود في هذا الملف.
‫جميع الوظائف التي كنا نكتبها كانت في ملف نقطي واحد فقط.
‫لكن في الحياة الواقعية ، هذا ليس هو الحال.
‫لدينا الكثير من الأكواد ولا يمكننا الحصول على ملف واحد يحتوي على ملايين سطر من التعليمات البرمجية.
‫إذن كيف نبقى منظمين؟
‫نحن سوف.
‫إذا كان لدينا ملفات متعددة من Python.
‫مثل هذا لأن مشروعنا يكبر ويضخم.
‫هل هذا العمل؟
‫هل هناك طريقة لربط كل هذه الملفات معًا؟
‫في واقع الأمر ، هناك ممارسة شائعة جدًا في جميع أنحاء الصناعة ، ونطلق عليها هذه
‫الطريقة لتنظيم وحدات الكود.
‫والوحدات هي ببساطة ، حسنًا ، هذه الملفات.
‫كل ملف من هذه الملفات ، كل ملف dot pi عبارة عن وحدة نمطية.
‫ومن خلال بناء هذه الوحدات ، يشبه نوعًا ما قمنا ببناء وظائف مختلفة ، نوعًا ما قمنا ببناء فئات مختلفة
‫لأنه داخل هذه الملفات يمكن أن يكون لدينا فئات ، ويمكننا الحصول على وظائف ، ولكن يمكننا أيضًا الحصول على ملفات
‫مختلفة.
‫لذا طبقة أعلى لتقسيم الكود الخاص بنا.
‫وفي هذا القسم سنتعلم كل شيء عن الوحدات ونحاول إتقانها ونرى كيف يمكننا كتابة تعليمات
‫برمجية منظمة.
‫لنلقي نظرة.
‫يمكنك أن ترى هنا ، إذا قمت بالنقر فوق الملفات الموجودة في تموجنا ، فلدينا pi رئيسي وفي كل مرة أنقر فوق
‫تشغيل ، يتم تشغيل هذا الملف.
‫لكن ماذا لو كان لدينا المزيد من الملفات؟
‫ماذا لو أضفت ملفًا آخر هنا وسنطلق عليه اسم Utility Dot Pi؟
‫بناءً على ما علمتك إياه للتو ، هذان الشيئان هما ماذا؟
‫إنها وحدات ، أليس كذلك؟
‫الرئيسي Pi هو أداة مساعدة الوحدة النمطية.
‫PI هي وحدة نمطية.
‫وعند كتابة الوحدات ، نستخدم نفس مبادئ المتغيرات في بايثون ، وهي حالة الثعبان.
‫هذا يعني أنه إذا كانت هناك مسافات نستخدم شرطة سفلية ، فكل شيء يكون حرفًا صغيرًا.
‫فكيف نقسم هذه الوحدات؟
‫وهذا يأتي مع الممارسة.
‫عندما تبدأ للتو ، من الصعب أن تقول ، ما الذي يدخل في أي ملف ، وما الذي يدخل في أي
‫ملف؟
‫لكنها تشبه الفصول ، أليس كذلك؟
‫على غرار الوظائف.
‫نريد تقسيم الكود الخاص بنا إلى أجزاء منطقية.
‫مرة أخرى ، لنفترض أننا نعمل في Netflix.
‫قد يكون لدينا ملف مخصص لمقاطع الفيديو ، وقد يكون لدينا ملف أو وحدة أخرى مخصصة لتسجيل دخول المستخدم
‫، وربما ملف آخر مخصص للتحليلات والتوصل إلى توصيات للمستخدمين.
‫نريد تجميع هذه الفئات والوظائف معًا داخل ملف منطقي.
‫الآن ، واحدة من أكثر الطرق شيوعًا لاستخدام الوحدة هي شيء مثل الأداة.
‫لنفترض أننا نرغب في إنشاء وحدة نمطية وهي عبارة عن وحدة بها الكثير من الأشياء الجيدة ، نوعًا ما
‫مثل حزام الأدوات ، وظائف بسيطة جدًا يمكننا استخدامها في جميع أنحاء مشروعنا لأننا نتخيل هنا وجود
‫ملفات متعددة.
‫لذلك دعونا ننشئ مثالًا بسيطًا جدًا.
‫سأقول إن دالة الضرب موجودة هنا.
‫وهذا يحتاج إلى خدر وخدر.
‫وهنا نعيد ببساطة num واحد في num إلى دالة بسيطة جدًا.
‫ومرة أخرى ، لدينا أيضًا دالة قسمة.
‫ونعم ، هذا عديم الفائدة نوعًا ما لأنه يمكننا فقط استخدام معامل الجمع أو القسمة في بايثون.
‫لكن ابق معي هنا.
‫أحاول أن أريكم مثالاً.
‫حسنا.
‫رقم اثنين ، سأعيد العدد واحد مقسومًا على العدد اثنين.
‫جميل وبسيط.
‫إذا هذا.
‫هي وحدة المنفعة الخاصة بنا التي تحتوي على كل هذه الوظائف بالنسبة لنا.
‫لاحظ الآن هنا أننا في الواقع لا نفعل أي شيء في هذا الملف.
‫أنا ببساطة أحدد الوظائف ، لكنني لا أقوم بتشغيل أي من الوظائف.
‫ولكن لنفترض أن لدينا وحدة الأداة المساعدة هذه وأريد استخدامها في ملف py الرئيسي.
‫كيف سنفعل هذا؟
‫حسنًا ، الطريقة التي نتواصل بها بين هذين الملفين بسيطة للغاية.
‫كل ما نحتاجه هو استخدام أمر الاستيراد الذي نستورده ثم نمنحه اسم الملف الذي نريد استيراده.
‫ماذا نريد استيراد؟
‫نريد استيراد أداة مثل هذا تمامًا.
‫ولاحظ أنني لا أقوم بإضافة النقطة py لأننا نفترض أن كل ما سنستورده سيكون
‫ملف بيثون.
‫لذلك نحن لسنا بحاجة للقيام بذلك.
‫فقط الاسم.
‫مثل هذا تماما.
‫الآن ، دعنا نطبع الأداة المساعدة هنا.
‫إذا قمت بتشغيل هذا.
‫قف.
‫هل رأيت ذلك؟
‫لدينا وحدة مساعدة من ثم هذا هو مسار الملف الذي ينشئه هذا الموقع لنا ، لذلك لا
‫يهم حقًا.
‫الآن ، هناك بعض الأشياء التي حدثت هنا.
‫الأول هو أننا أنشأنا هذا المجلد النقدي py.
‫تسطير.
‫النقدية PY.
‫و.
‫أوه ، يا فتى ، ما هذا الثرثرة؟
‫همم.
‫هذا محير جدا ، أليس كذلك؟
‫حسنًا ، يتم إنشاء ذاكرة التخزين المؤقت الدائرية هذه في كل مرة نقوم فيها بتشغيل ملف به ، دعنا نقول ، عبارات الاستيراد.
‫لذلك عندما نستخدم الوحدات.
‫كما ترى ، ما يفعله Pi Cash هو عندما نضغط على Run.
‫سيقوم المترجم بإنشاء مجلد البودكاست هذا وسيقول ، مرحبًا ، أنا أقوم بتشغيل
‫هذا الملف ، ملف pi رئيسي واحد ، أي شيء قد لا يستورده ملف py ، دعنا نقول فائدة.
‫في حالتنا سأقوم بصرفها.
‫انظر كيف هنا مكتوب dot pi.
‫انظر ، هذا لأنه يستخدم مترجم C Python.
‫تذكر ، هذا هو C python ، وهو مترجم مكتوب و C ، لذلك هذا في الواقع ملف مترجم.
‫لذلك في المرة القادمة التي أنقر فيها على زر التشغيل هنا على باي الرئيسي الخاص بي ، لم يتغير شيء لأن ما سيحدث هو بدلاً
‫من تحميل الأداة المساعدة ، سيتم تحميل هذا الإصدار المترجم من الأداة المساعدة لأنه لم يتغير شيء.
‫وفائدة بي.
‫وهذا يجعل الأمور أسرع.
‫عندما حاولت تشغيل Main Pi مرة أخرى ، هذا هو التخزين المؤقت.
‫التخزين المؤقت هو ، مهلاً ، سأتذكر هذا وهذه هي النسخة المجمعة ، لذا لا
‫يتعين علي المرور بخطوة التجميع مرة أخرى.
‫لكن لاحظ أن ملف pi الرئيسي لا يتم تجميعه لأننا نقوم بتشغيله في كل مرة.
‫الآن ، إذا قمنا بتغيير وظيفة الأداة المساعدة بحيث لا تحتوي على القسمة هناك ، أنقر فوق تشغيل ولن تلاحظها
‫هنا.
‫ولكن تمت إعادة تشغيل هذا الآن لأن لدينا ملفًا مختلفًا.
‫ترى أننا ضاعفنا هنا لكننا لم نقسم.
‫لذلك دعونا نعيد القسمة مرة أخرى.
‫ارجع إلى هنا ، انقر فوق تشغيل.
‫وها أنت ذا.
‫لقد انقسمنا هنا أيضًا الآن.
‫لكن هذا شيء لا نلمسه.
‫يأتي هذا أسفل الغطاء مع أي محرر نستخدمه.
‫وفي عدد قليل من مقاطع الفيديو ، سوف نوضح لك كيف يحدث هذا أيضًا عندما نستخدم شيئًا مثل الرسم البياني الدائري.
‫هذا مجرد شيء يسمح لنا المحررون بالقيام به حتى تتمكن برامجنا من العمل بشكل أسرع.
‫لذلك لدي الآن إمكانية الوصول.
‫لنجعل هذا أصغر قليلاً.
‫لدي الآن حق الوصول إلى الأداة.
‫وهذا هو الجزء المثير للاهتمام.
‫إذا قمت بالنقطة هنا ، انظر إلى ذلك.
‫لدي حق الوصول إلى القسمة والضرب حتى أتمكن من مضاعفة الأرقام.
‫لنفترض نقرتين وثلاث نقرات فوق تشغيل.
‫وأنا قادر على استخدام الوحدة النمطية في ملفي الرئيسي.
‫رائع جدا.
‫إذا قمت بالتقسيم وقمت بالنقر فوق تشغيل.
‫يمكنني استخدام هذا أيضا.
‫رائع جدا.
‫ويمكنني الاستيراد عدة مرات كما أريد إذا كان لدي ملف مختلف هنا وأريد استيراد شيء آخر.
‫دعنا نقول أن هناك فائدة لتقديم ملف.
‫حسنًا ، يمكنني استيراد ذلك واستيراد العديد من الأشياء التي أريدها واستخدامها عبر ملفاتي.
‫كم ذلك رائع؟
‫الآن لدينا طريقة لتنظيم الكود الخاص بنا وجعل كل هذه الملفات تتواصل معًا.
‫لأنه في الحياة الواقعية ، لدينا مشاريع كبيرة وسيتم العمل على هذه المشاريع الكبيرة بواسطة فرق
‫مختلفة ومبرمجين مختلفين.
‫ونحن بحاجة إلى طريقة للعمل مع كل هذه الملفات.
‫وباستخدام عبارات الاستيراد بين الوحدات ، يمكننا استخدام الوظائف ، تمامًا كما كنا قادرين
‫على استخدام الوظيفة التي توفرها لنا بين الملفات المختلفة.
‫وفي معظم الأحيان ، إذا كنت تعمل في شركة ، فإن أول سطرين في ملف dot pi عادة ما يكونان
‫عبارات استيراد لأنك عادةً ما تتواصل مع ملفات أخرى.
‫دعنا نتعلم المزيد في الفيديو التالي.