0Pricing
Python Academy · درس

الحزم و__init__.py

نظّم الوحدات في حزم باستخدام بنية أدلة مناسبة

الحزم و__init__.py درس مجاني في Python Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Python Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Python Academy 4 دروس في المجموع.

ما الحزمة؟

تُعد الحزمة مجلدًا يحتوي على ملف __init__.py ووحدة واحدة أو أكثر. وتتعامل Python مع أي مجلد من هذا النوع على أنه حزمة يمكنك الاستيراد منها.

mypackage/
    __init__.py
    utils.py
    math_helpers.py

ملف __init__.py

يُنفَّذ __init__.py عند استيراد الحزمة. ويمكن أن يكون فارغًا أو يتيح أسماء محددة للجهات المستدعية.

# mypackage/__init__.py
from .utils import helper
from .math_helpers import add

الاستيراد من حزمة

استخدم الصيغة النقطية لاستيراد الوحدات الفرعية أو الأسماء المعرّفة في __init__.py.

import mypackage
from mypackage import helper
from mypackage.math_helpers import add
print(add(2, 3))

الحزم الفرعية

يمكن للحزم أن تتداخل؛ إذ يصبح المجلد الفرعي الذي يحتوي على ملف __init__.py حزمةً فرعية.

mypackage/
    __init__.py
    network/
        __init__.py
        http.py

الاستيرادات النسبية

استخدم داخل الحزمة استيرادات نسبية تبدأ بنقطة للإشارة إلى الوحدات الشقيقة دون تثبيت اسم الحزمة داخل الشفرة.

# mypackage/network/http.py
from ..utils import helper   # two levels up

الاستيرادات المطلقة مقابل النسبية

الاستيرادات المطلقة واضحة ولا تحتمل اللبس، ولذلك يُفضّل استخدامها. وتفيد الاستيرادات النسبية داخل الحزم الكبيرة لتجنب الأسماء الطويلة.

# Absolute
from mypackage.utils import helper

# Relative (inside mypackage)
from .utils import helper

__all__ في __init__.py

عرّف __all__ للتحكم في العناصر التي يصدّرها from package import *.

# mypackage/__init__.py
__all__ = ['helper', 'add']
from .utils import helper
from .math_helpers import add

حزم مساحة الاسم (PEP 420)

تدعم Python 3.3 والإصدارات الأحدث حزم مساحة الاسم، وهي مجلدات لا تحتوي على __init__.py. وتفيد في تقسيم الحزمة بين عدة مجلدات.

# No __init__.py needed
# Just have the directory and import normally
import myns.module

تهيئة __init__ للحزمة

استخدم __init__.py لتعيين الثوابت على مستوى الحزمة، أو إعداد التسجيل، أو تحميل الوحدات الفرعية الثقيلة بشكل كسول.

# mypackage/__init__.py
import logging
logging.getLogger(__name__).addHandler(logging.NullHandler())
VERSION = '1.0.0'

توزيع الحزم

أضف pyproject.toml أو setup.py لجعل حزمتك قابلة للتثبيت باستخدام pip.

# pyproject.toml excerpt
[project]
name = "mypackage"
version = "1.0.0"

# Install locally
# pip install -e .

فحص سمات الحزمة

استخدم __file__ و__path__ و__name__ لفحص البيانات الوصفية للحزمة في وقت التشغيل.

import mypackage
print(mypackage.__file__)   # path to __init__.py
print(mypackage.__path__)   # list of directory paths
print(mypackage.__name__)   # 'mypackage'

تحقق سريع

أي ملف يجعل المجلد حزمة Python؟

خلاصة

تنظّم الحزم الوحدات داخل مجلدات باستخدام __init__.py. استخدم الاستيرادات المطلقة للوضوح، والاستيرادات النسبية داخل الحزمة، و__all__ للتحكم في واجهات API العامة.

الأسئلة الشائعة

هل درس «الحزم و__init__.py» مجاني؟

نعم — نص درس «الحزم و__init__.py» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Python Academy 4 دروس في المجموع.

ماذا ستتعلم في «الحزم و__init__.py»؟

نظّم الوحدات في حزم باستخدام بنية أدلة مناسبة تتمرن على Python Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Python Academy؟

لا تُشترط خبرة سابقة. Python Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «الحزم و__init__.py»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Python Academy هذا؟

نعم. كل درس في Python Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. إنشاء الوحدات واستيرادها
  2. المكتبة القياسية في Python
  3. الحزم و__init__.py
  4. تثبيت الحزم باستخدام pip
← العودة إلى Python Academy