جدول المحتويات[يخفي][يعرض]
ستمتد هذه المحاضرة حول الوحدات والحزم في بايثون.
إنها طريقة لتنظيم التعليمات البرمجية الخاصة بك في شكل ملفات وهي مهمة حقًا إذا كنت تنوي إنشاء تطبيقات ويب باستخدام Python
الوحدات
الوحدة النمطية في Python هي في الأساس ملف به بعض كود Python الذي نستخدمه لتنظيم الكود الخاص بنا في ملفات. فكر في الأمر مثل الأقسام في السوبر ماركت. عندما تذهب إلى سوبر ماركت هناك أقسام مختلفة للفواكه والخضروات ومنتجات التنظيف وما إلى ذلك ، لا ترى قسمًا واحدًا يحتوي على جميع المنتجات.
إنه نفس المفهوم في البرمجة. بدلاً من كتابة جميع التعليمات البرمجية الخاصة بنا مع جميع الوظائف والفئات في main.py ، نقوم بتقسيم الكود الخاص بنا إلى ملفات متعددة. يشار إلى كل ملف على أنه وحدة نمطية. باستخدام هذا ، لا يتم تنظيم وتنظيم الكود بشكل أفضل فحسب ، ولكن لدينا أيضًا القدرة على إعادة استخدام الكود الخاص بنا. دعونا نرى ذلك من خلال مثال.
دعنا نحدد وظيفتين لتحويل الوزن من أرطال إلى كيلوغرامات والعكس صحيح.
def lbs_to_kg(weight):
return weight * 0.45
def kg_to_lbs(weight):
return weight / 0.45
الآن ، يمكننا أخذ هاتين الوظيفتين ووضعهما في وحدة منفصلة تسمى "المحولات" ، ومن ثم يمكن استيرادها إلى أي برنامج يحتاج إلى وظائف المحول هذه. دعني أوضح لك كيفية القيام بذلك.
لنفتح لوحة المشروع الخاصة بنا وننقر بزر الماوس الأيمن فوق المشروع ونضيف ملفًا جديدًا. سنطلق على هذا الملف اسم "Converters.py".
الآن انسخ الكود من الملف الافتراضي والصقه في “Converters.py”.
مع هذا ، قمنا بتنظيف الوحدة الرئيسية الخاصة بنا ولم يتم تضخمها بوظائف مختلفة. بينما نكتب المزيد من الوظائف مع الفئات ، نضعها في الوحدات النمطية المقابلة لها. يجب أن تحتوي الوحدة النمطية على جميع الوظائف والفئات ذات الصلة. الآن ، نريد استيراد وحدة المحولات إلى وحدة التطبيق الخاصة بنا. للقيام بذلك ، اكتب import converters
في الجزء العلوي بدون التمديد ".py".
يمكننا الوصول إلى أعضاء الوحدة باستخدام عامل نقطة مشابه للطرق.
لنحول 70 كجم إلى أرطال:
هناك أيضًا صيغة أخرى لاستيراد الوحدات. بدلاً من استيراد الوحدة بأكملها ، يمكننا استيراد وظائف محددة من تلك الوحدة. يمكننا الكتابة from Converters import
واضغط على "control + space لإظهار قائمة الوظائف المتاحة. مع هذا ، يمكننا استدعاء هذه الوظيفة مباشرة.
ممارسة
هذا هو التمرين الخاص بك.
هذا مرتبط بتمرين من المحاضرة حيث ناقشنا "للحلقات"حيث كتبنا برنامجًا لمعرفة أكبر عدد من القائمة
numbers = [8, 3, 6, 10, 5]
max = numbers[0]
for number in numbers:
if number > max:
max = number
print(max)
هذا الرمز ليس له منظمة حاليا. ليس لدينا أي وظائف أو وحدات والبرنامج مكتوب في ملف واحد. هذا أمر جيد بالنسبة للبرامج الصغيرة ولكن مع نمو برامجك ، تحتاج إلى تنظيم التعليمات البرمجية الخاصة بك بشكل صحيح في فئات ووحدات نمطية. لذلك ، كجزء من هذا التمرين ، أريدك أن تكتب دالة ، تسميها find_max
. يجب أن تأخذ هذه الوظيفة قائمة وتعيد أكبر رقم في تلك القائمة. بعد ذلك ، قم بوضع هذه الوظيفة في وحدة منفصلة ، واستخرجها من هنا وضعها في وحدة تسمى utils
. يجب أن تحتوي هذه الوحدة على مجموعة من وظائف المرافق. قم باستيراد ملف utils
وحدة في الوحدة الحالية والدعوة find_max
وظيفة. أخيرًا ، احصل على النتيجة واطبعها على الجهاز.
هذا التمرين صعب بعض الشيء ولكن يمكن تنفيذه بسهولة.
الحلول
ابدأ بتحديد وظيفة find_max
وأضف معلمة تسمى الأرقام. داخل هذه الوظيفة ، اكتب الخوارزمية لإيجاد أكبر رقم في القائمة.
def find_max(numbers):
max = numbers[0]
for number in numbers:
if number > max:
max = number
return max
احفظ هذا الرمز في ملف "utils.py" كوحدة نمطية.
بالعودة إلى برنامجنا الرئيسي ، ما عليك سوى استيراد الوحدة من خلال أي من الصيغتين وتنفيذ المنطق ببساطة.
شيء واحد ، أحتاج إلى لفت انتباهك إليه هو التقويض max
. والسبب في ذلك هو max
هي وظيفة مضمنة في Python ونحن نعيد تعريفها. لذلك هذا تحذير من مترجم بايثون أنه لم يعد بإمكاننا استخدام max كوظيفة مضمنة فيه.
وحدات مدمجة في بايثون
تأتي Python مع مكتبة قياسية تحتوي على العديد من الوحدات النمطية للمهام الشائعة مثل إرسال رسائل البريد الإلكتروني ، والعمل مع التاريخ والوقت ، وإنشاء قيم عشوائية وكلمات مرور وما إلى ذلك. هناك العديد من الوحدات المدمجة بالفعل في Python مما يعني أن هناك بالفعل الكثير من الوظائف التي يمكننا إعادة استخدامها. يمكنك أن تجد هذه الوحدات هنا.
الباقات
الحزم هي في الأساس طريقة أخرى لتنظيم الكود الخاص بنا فوق الوحدات. يمكن أن يحتوي المشروع الحقيقي على مئات أو حتى آلاف الوحدات النمطية وبمرور الوقت سيتضخم دليلنا بالعديد من الملفات. لذلك ، تتمثل الطريقة الأفضل في تنظيم الوحدات ذات الصلة داخل الحزمة مما يجعل الحزمة حاوية لوحدات متعددة.
يتم إضافة دليل جديد إلى المشروع ويتم إضافة جميع الوحدات ذات الصلة إلى هذا الدليل. كمثال ، فكر في مركز تجاري. هناك أقسام مختلفة لملابس الرجال والنساء والأطفال في المول والتي تشبه الباقات. يحتوي كل قسم على مناطق مختلفة لأنواع مختلفة من المنتجات مثل الأحذية والقمصان والسترات. فكر في هذه كوحدات نمطية.
دعونا نرى كيفية إنشاء واستخدام الحزم في بايثون.
أولاً ، أضف دليلًا جديدًا من لوحة المشروع. دعنا نسميها "التجارة الإلكترونية". ستحتوي هذه الحزمة على جميع الوحدات المتعلقة بتطبيق التجارة الإلكترونية.
لا يزال دليلًا فارغًا ولتحويله إلى حزمة ، نحتاج إلى إنشاء ملف خاص فيه. أضف ملف python جديدًا في هذا الدليل وقم بتسمية هذا الملف "__init__". إنها اصطلاح خاص في Python وعندما يرى مترجم Python ملفًا بهذا الاسم في دليل ، فإنه يتعامل مع هذا الدليل كحزمة.
لدينا أيضًا طريقة بديلة وموجزة لإنشاء حزمة. ما عليك سوى النقر بزر الماوس الأيمن فوق لوحة المشروع وإنشاء حزمة Python من القائمة. أطلق عليها اسم "التجارة الإلكترونية" وهذا كل شيء. سيقوم تلقائيًا بإنشاء دليل بملف Python المسمى "__init__".
الآن ، دعنا ننشئ وحدة نمطية في الحزمة ونطلق عليها اسم "shipping". في هذه الوحدة ، دعنا ننشئ وظيفة بسيطة لحساب تكاليف الشحن.
def calc_shipping():
print("calc_shipping")
للوصول إلى هذه الوظيفة في وحدتنا الرئيسية ، يتعين علينا الوصول إليها من خلال حزمة التجارة الإلكترونية. مرة أخرى ، لدينا طريقتان لاستيراد هذه الوحدة.
في الطريقة الأولى ، يمكننا استيراد الوحدة بأكملها ثم استدعاء دالة بشكل مستقل مثل هذا:
import eCommerce.shipping
eCommerce.shipping.calc_shipping()
ومع ذلك ، مع هذا النهج ، يتطلب استدعاء إحدى الوظائف لهذه الوحدة مسبوقة بـ eCommerce.shipping.
هذا مطول جدا. لذلك ، عند العمل مع الحزم ، غالبًا ما نستخدم الطريقة الثانية ونستخدم امتداد from
بيان.
from eCommerce.shipping import calc_shipping
calc_shipping()
إذا كان لديك وظائف متعددة في وحدة نمطية واحدة ، فيمكنك استيرادها جميعًا في سطر واحد باستخدام الفواصل بينها. لنفترض أن هناك وظيفة أخرى لحساب الضريبة في وحدة الشحن الخاصة بنا. سيتم استيراده على النحو التالي:
from eCommerce.shipping import calc_shipping, calc_tax
يمكنك أيضًا استيراد وحدات فردية وترك الوظائف ليتم استدعاؤها في مرحلة لاحقة من البرنامج. دعنا نستورد شحن الوحدة ثم نستخدم عامل التشغيل النقطي لاستدعاء الوظيفة calc_shipping.
from eCommerce import shipping
shipping.calc_shipping()
يتم إحتوائه!
تعتبر الحزم والوحدات النمطية مهمة للغاية في بايثون. على وجه الخصوص ، عندما تريد العمل مع إطار عمل مثل Django الذي يستخدم للبناء تطبيقات الويب مع بايثون. سننظر في Django خلال دورة بايثون أخرى.
كانت هذه آخر محاضرة تقليدية في هذه السلسلة. ستنحرف المحاضرة التالية عن تنسيقنا المعتاد وسنتعلم بعض حالات الاستخدام المهمة في بايثون. سيشكل ذلك نهاية هذه السلسلة وسننتقل إلى سلسلة Python التالية. ترقبوا ذلك.
اترك تعليق