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