البحث عن الوَحدات

7.5 البحث عن الوَحدات

أهداف التعلم

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

  • شرح الاختلافات بين المكتبة القياسية و PyPI.
  • البحث في python.org و pypi.org عن الوَحدات ذات الاهتمام.

الوحدات المُضمَّنة

إن مكتبة بايثون القياسية (Python Standard Library) هي مجموعة من الدوال المُضمَّنة والوَحدات التي تدعم مهام البرمجة الشائعة. مثال: توفر وَحدة math دوال مثل sqrt() وثوابت مثل pi. تتضمن الوثائق الرسمية لبايثون مرجعًا للمكتبة وفهرسًا للوَحدات للتعرف على المكتبة القياسية.

لعقود من الزمن، حافظت بايثون على فلسفة "البطاريات متضمنة" (batteries included). تعني هذه الفلسفة أن المكتبة القياسية يجب أن تأتي بكل ما يحتاجه معظم المبرمجين. في الواقع، تتضمن المكتبة القياسية أكثر من 200 وَحدة مُضمَّنة!

الوحدة الوصف

calendar

دوال عامة متعلقة بالتقويم.

datetime

أنواع ودوال أساسية للتاريخ والوقت.

email

إنشاء ومعالجة رسائل البريد الإلكتروني.

math

دوال وثوابت رياضية.

os

التفاعل مع نظام التشغيل.

random

توليد أرقام شبه عشوائية.

statistics

دوال الإحصاء الرياضي.

sys

مُعامِلات ودوال خاصة بالنظام.

turtle

إطار عمل تعليمي للرسومات البسيطة.

zipfile

قراءة وكتابة ملفات الأرشيف بصيغة ZIP.
جدول 7.1 أمثلة على الوَحدات المُضمَّنة في المكتبة القياسية.

مفاهيم تطبيقية

الوحدات المُضمَّنة

استخدم مرجع المكتبة وفهرس الوَحدات وروابط التوثيق أعلاه للإجابة على الأسئلة.

1.
أي صفحة توفر قائمة بالوَحدات المُضمَّنة مُرتَّبة حسب الفئة؟
  1. مرجع المكتبة
  2. فهرس الوَحدات
  3. PEP 2
2.
ما قيمة calendar.SUNDAY؟
  1. 1
  2. 6
  3. 7
3.
أي وَحدة مُضمَّنة تُمكِّن تطوير واجهات المستخدم الرسومية؟
  1. tkinter
  2. turtle
  3. webbrowser

وَحدات الطرف الثالث

إن فهرس حزم بايثون (Python Package Index) (PyPI)، المتاح على pypi.org، هو المكتبة الرسمية لبرمجيات الطرف الثالث لبايثون. يُنطق الاختصار "PyPI" مثل باي بي آي (على عكس PyPy، وهو مشروع مختلف).

تسمح PyPI لأي شخص بتطوير ومشاركة الوَحدات مع مجتمع بايثون. يشمل مؤلفو الوَحدات أفرادًا، وشركات كبيرة، ومنظمات غير ربحية. تساعد PyPI المبرمجين على تثبيت الوَحدات وتلقي التحديثات.

معظم البرمجيات المتاحة على PyPI مجانية ومفتوحة المصدر. تدعم مؤسسة بايثون للبرمجيات PyPI وتُصانُ من قِبَل مجموعة مستقلة من المطورين.

الوحدة الوصف

arrow

تحويل وتنسيق التواريخ والأوقات والطوابع الزمنية.

BeautifulSoup

استخراج البيانات من مستندات HTML و XML.

bokeh

رسوم بيانية وتطبيقات تفاعلية في المتصفح.

matplotlib

تصوير بيانات ثابت، متحرك، وتفاعلي.

moviepy

تحرير الفيديو، تركيبه، ومعالجته.

nltk

أدوات معالجة اللغة الطبيعية للغات البشرية.

numpy

حزمة أساسية للحوسبة العددية.

pandas

مكتبة لتحليل البيانات، السلاسل الزمنية، والإحصاء.

pillow

معالجة الصور بصيغ jpg و png وغيرها.

pytest

أداة اختبار كاملة الميزات وإطار عمل لاختبار الوحدات.

requests

مكتبة HTTP أنيقة للاتصال بخوادم الويب.

scikit-learn

أدوات بسيطة وفعالة لتحليل البيانات التنبؤي.

scipy

خوارزميات أساسية للحوسبة العلمية.

scrapy

الزحف إلى مواقع الويب واستخلاص البيانات من صفحات الويب.

tensorflow

منصة تعلم آلة شاملة للجميع.
جدول 7.2 أمثلة على وَحدات الطرف الثالث المتاحة من PyPI.

مفاهيم تطبيقية

وَحدات الطرف الثالث

استخدم pypi.org والروابط في الجدول أعلاه للإجابة على الأسئلة.

4.
أي الوَحدات يمكن استخدامها لتحرير الصور ومقاطع الفيديو؟
  1. BeautifulSoup و Scrapy
  2. Bokeh و Matplotlib
  3. MoviePy و Pillow
5.
أي وَحدة من وَحدات الطرف الثالث تُعد بديلًا للوَحدة المُضمَّنة datetime؟
  1. arrow
  2. calendar
  3. time
6.
ابحث عن وَحدة webcolors على PyPI. ما الدالّة التي توفرها webcolors والتي تبحث عن اسم اللون لرمز سداسي عشري؟
  1. hex_to_name
  2. name_to_hex
  3. normalize_hex

استكشاف إضافي

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

جرّب بنفسك

عيد ميلاد سعيد

غالبًا ما تتضمن صفحات توثيق الوَحدات أمثلة لمساعدة المبرمجين على التعرف على الوَحدة. لهذا التمرين، ارجع إلى الأمثلة التالية من توثيق وَحدة datetime:

اكتب برنامجًا ينشئ كائن date يمثل تاريخ ميلادك. ثم احصل على كائن date يمثل تاريخ اليوم (التاريخ الذي يتم فيه تشغيل البرنامج). احسب الفرق بين التاريخين، واعرض النتائج بالتنسيق التالي:

    Your birth date: 2005-03-14
    Today's date is: 2023-06-01

    You were born 6653 days ago
    (that is 574819200 seconds)

    You are about 18 years old

جرّب بنفسك

عمر أكثر دقة

لا توفر وَحدة datetime طريقة مُضمَّنة لعرض العمر الدقيق للشخص. مثال: يحسب البرنامج التالي عمرًا دقيقًا (بالسنوات والأيام) باستخدام القسمة السفلية وباقي القسمة. الناتج هو: You are 15 years and 4 days old.

    from datetime import date

    birth = date(2005, 3, 14)
    today = date(2020, 3, 14) # 15 years later
    delta = today - birth
    
    years = delta.days // 365
    days = delta.days % 365
    print("You are", years, "years and", days, "days old")

لاحظ كيف تُؤخذ السنوات الكبيسة في الحسبان. يحدث 29 فبراير أربع مرات بين birth و today. لذلك، المستخدم ليس فقط بعمر 15 عامًا، بل 15 عامًا و 4 أيام.

العديد من الوَحدات الشائعة الاستخدام من PyPI، بما في ذلك arrow، مثبتة في صَدَفة بايثون على python.org/shell. افتح صَدَفة بايثون واكتب الأسطر التالية:

    import arrow
    birth = arrow.get(2005, 3, 14)
    birth.humanize()

ارجع إلى أمثلة humanize() من توثيق وَحدة arrow. في صَدَفة بايثون، اكتشف كيفية عرض عدد السنوات والأيام منذ birth باستخدام سطر واحد من الشِفرة. ثم اعرض عدد السنوات والأشهر والأيام منذ birth. أخيرًا، استخدم دالّة print() لإخراج النتائج بهذا التنسيق: You are 18 years 4 months and 7 days old.

عندما يسمح الوقت، جرّب دوال أخرى توفرها وَحدة arrow.