الدرس 17 من 20

بنية المشروع

الوحدات والاستيرادات

2 دقيقة للقراءة

الوحدات تتيح لك تنظيم الكود في ملفات منفصلة. فهم الاستيرادات ضروري للعمل مع مكتبات بايثون وكودك الخاص.

أساسيات الاستيراد

# استيراد الوحدة بالكامل
import json
data = json.loads('{"key": "value"}')

# استيراد عناصر محددة
from json import loads, dumps
data = loads('{"key": "value"}')

# استيراد مع اسم مستعار
import numpy as np
arr = np.array([1, 2, 3])

# استيراد كل شيء (تجنب هذا!)
from json import *  # صعب تتبع ما تم استيراده

وحداتك الخاصة

أي ملف .py هو وحدة. أنشئ helpers.py:

# helpers.py
def format_prompt(text):
    return f"المستخدم: {text}"

API_VERSION = "v1"

استخدمه في ملف آخر:

# main.py
from helpers import format_prompt, API_VERSION

prompt = format_prompt("مرحباً!")
print(f"استخدام API {API_VERSION}")

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

داخل حزمة، استخدم الاستيرادات النسبية:

my_agent/
├── __init__.py
├── core.py
└── tools/
    ├── __init__.py
    └── search.py
# في tools/search.py
from ..core import AgentCore  # اصعد مستوى واحد
from . import utils           # نفس الدليل

أنماط الاستيراد الشائعة

# المكتبة القياسية
import os
import json
from pathlib import Path
from typing import List, Dict, Optional

# طرف ثالث
import requests
from dotenv import load_dotenv

# مكتبات الذكاء الاصطناعي
from openai import OpenAI
from langchain.agents import create_react_agent

# وحداتك
from .config import settings
from .tools import SearchTool

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

# سيء: a.py يستورد b.py، و b.py يستورد a.py
# هذا يسبب أخطاء!

# الحل 1: الاستيراد داخل الدالة
def process():
    from .other_module import helper  # استورد عند الحاجة
    return helper()

# الحل 2: إعادة هيكلة الكود
# انقل الكود المشترك إلى وحدة ثالثة

أفضل ممارسات الاستيراد

افعل لا تفعل
جمّع الاستيرادات (stdlib، طرف ثالث، محلي) خلط أنماط الاستيراد عشوائياً
استخدم الاستيرادات المطلقة عند الإمكان استخدم from x import *
استورد في أعلى الملف (عادةً) استورد نفس الوحدة عدة مرات
استخدم أسماء مستعارة للأسماء الطويلة إنشاء أسماء مستعارة مربكة

بعد ذلك، سنتعلم كيفية تنظيم مشاريع الذكاء الاصطناعي بشكل احترافي. :::

اختبار

الوحدة 5: بنية المشروع

خذ الاختبار