بنية المشروع
الوحدات والاستيرادات
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 * |
| استورد في أعلى الملف (عادةً) | استورد نفس الوحدة عدة مرات |
| استخدم أسماء مستعارة للأسماء الطويلة | إنشاء أسماء مستعارة مربكة |
بعد ذلك، سنتعلم كيفية تنظيم مشاريع الذكاء الاصطناعي بشكل احترافي. :::