Python للمبتدئين: دليلك الشامل لتعلم Python وأفضل الممارسات

تم التحديث: ٢٧ مارس ٢٠٢٦

Python for Newbies Your Ultimate Guide to Learning Python and Best Practices

ملخص

ابدأ تعلم Python باستخدام إصدار Python 3.12+، واستخدم البيئات الافتراضية (uv أو venv) من اليوم الأول، واتبع الأدوات الحديثة (ruff للتنسيق، و pyright لفحص الأنواع)، واكتب الكود مع تلميحات الأنواع (type hints) من أجل الوضوح. هذه الممارسات تمنع العادات السيئة وتتوسع بسلاسة من المشاريع الشخصية إلى الكود الاحترافي.

تعلم Python شيء، وتعلمها بالطريقة الصحيحة شيء آخر. الكثير من الدروس التعليمية تعلم عادات سريعة وغير منظمة: لا تلميحات للأنواع، لا تنسيق تلقائي، ولا هيكلة. ثم يصطدم المتعلمون بمشاريع حقيقية ويعانون من أخطاء غامضة، وكود يصعب تصحيحه، وممارسات قديمة تعلموها منذ سنوات. هذا الدليل يعلم أساسيات Python مع دمج أفضل الممارسات من اليوم الأول — ليكون كودك نظيفاً، وقابلاً للقراءة، واحترافياً منذ أول سكربت تكتبه.

الخطوة 1: تثبيت Python 3.12+ (ليس 2، ولا إصدارات 3.x القديمة)

يوفر Python 3.12 رسائل خطأ أفضل، وتحسينات في الأداء، و bytecode محسناً. تمت إضافة جمل Match (مطابقة الأنماط الهيكلية) في Python 3.10. لا تستخدم Python 2 (انتهى دعمه في 2020) أو إصدارات Python 3.x القديمة (عفا عليها الزمن). اختر دائماً أحدث إصدار مستقر.

على Windows

  1. قم بزيارة python.org/downloads
  2. قم بتحميل Python 3.12 (أو أحدث إصدار 3.x)
  3. تأكد من تفعيل "Add Python to PATH" قبل التثبيت
  4. للتحقق: افتح موجه الأوامر (Command Prompt)، وشغل python --version

على macOS

# Using Homebrew (install brew first from brew.sh)
brew install python@3.12

على Linux (Ubuntu/Debian)

sudo apt update
sudo apt install python3.12 python3.12-venv

الخطوة 2: إعداد بيئة افتراضية (أمر بالغ الأهمية!)

لا تكتب الكود أبداً مباشرة في نسخة Python الخاصة بالنظام. تقوم البيئات الافتراضية بعزل مكتبات المشروع حتى لا تتسبب مكتبات مشروع ما في تعطل مشروع آخر. استخدم uv (أسرع وأبسط) أو venv (المكتبة القياسية).

# Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh

# Create a project directory
mkdir my_python_project
cd my_python_project

# Initialize a virtual environment
uv venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

استخدام venv (قياسي، مدمج)

mkdir my_python_project
cd my_python_project
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

سيظهر لك الآن في سطر الأوامر (.venv) $ مما يشير إلى أن البيئة نشطة.

الخطوة 3: مجموعة الأدوات الحديثة (معيار 2026)

منسق الكود: Ruff

يقوم Ruff بفرض أسلوب كود متسق تلقائياً. قم بتثبيته:

uv pip install ruff
# or with pip: pip install ruff

أنشئ ملف pyproject.toml في مجلد المشروع الرئيسي:

[tool.ruff]
line-length = 100
target-version = "py312"

[tool.ruff.lint]
select = ["E", "F", "W"]  # Errors, undefined names, whitespace

قم بتنسيق الكود الخاص بك:

ruff format .

يقوم Ruff تلقائياً بإصلاح المسافات، وترتيب الاستيرادات (imports)، ومخالفات الأسلوب.

فاحص الأنواع: Pyright

يكتشف Pyright أخطاء الأنواع قبل وقت التشغيل. التثبيت:

uv pip install pyright

الآن اكتب الكود مع تلميحات الأنواع:

def calculate_total(price: float, quantity: int) -> float:
    """Calculate order total"""
    return price * quantity

result = calculate_total(19.99, 5)  # OK
bad = calculate_total("19.99", 5)   # Error: string ≠ float

شغل pyright:

pyright

سيكتشف خطأ النوع فوراً دون الحاجة لتشغيل الكود.

بيئة التطوير: VS Code مع إضافة Python

قم بتحميل VS Code مجاناً. ثبت إضافة Python (افتح VS Code، اذهب إلى Extensions، ابحث عن "Python"، وثبت الإضافة الخاصة بـ Microsoft).

قم بتهيئة VS Code لمجموعة أدواتنا عن طريق إنشاء .vscode/settings.json:

{
  "python.linting.enabled": true,
  "python.linting.ruffEnabled": true,
  "[python]": {
    "editor.defaultFormatter": "charliermarsh.ruff",
    "editor.formatOnSave": true,
    "editor.codeActionsOnSave": {
      "source.organizeImports": "explicit"
    }
  },
  "python.analysis.typeCheckingMode": "strict"
}

الآن سيقوم VS Code بتنسيق الكود تلقائياً عند الحفظ وإظهار أخطاء الأنواع في الوقت الفعلي.

قواعد Python الأساسية مع تلميحات الأنواع

المتغيرات والأنواع

# Type hints make intent clear
name: str = "Alice"
age: int = 30
height: float = 5.9
is_student: bool = False

# Collections with specific types
scores: list[int] = [95, 87, 92]
person: dict[str, int] = {"age": 30, "year": 2026}

تلميحات الأنواع لا تستهلك أي موارد عند التشغيل وتحسن قابلية القراءة بشكل هائل. إنها ليست اختيارية — بل هي من أفضل الممارسات.

الدوال مع تلميحات الأنواع

def greet(name: str, age: int) -> str:
    """Return a personalized greeting

    Args:
        name: Person's name
        age: Person's age

    Returns:
        Formatted greeting string
    """
    return f"{name} is {age} years old"

greeting = greet("Bob", 25)

يجب على كل دالة التصريح عن أنواع المدخلات ونوع المخرجات. هذا يمنع الأخطاء ويجعل الكود يوثق نفسه بنفسه.

مطابقة الأنماط الحديثة (Python 3.10+)

قدم Python 3.10 جمل match (مثل switch في اللغات الأخرى):

def describe_number(n: int) -> str:
    match n:
        case 0:
            return "Zero"
        case 1 | 2:  # 1 or 2
            return "Small"
        case n if n < 0:
            return "Negative"
        case _:  # Default
            return "Large"

أكثر نظافة بكثير من سلاسل if/elif/else.

تضمين القوائم (الطريقة النيردية/Pythonic)

# Long way (avoid)
squared = []
for num in range(10):
    squared.append(num ** 2)

# Pythonic way
squared = [num ** 2 for num in range(10)]

# With conditions
evens = [x for x in range(20) if x % 2 == 0]

التضمينات أسرع وأكثر قابلية للقراءة.

هيكل المشروع: التخطيط الاحترافي

نظم مشروعك مثل الكود الحقيقي:

my_project/
├── .venv/                  # Virtual environment
├── pyproject.toml          # Project config (ruff, dependencies)
├── src/
│   └── my_project/
│       ├── __init__.py
│       ├── main.py
│       └── utils.py
├── tests/
│   ├── __init__.py
│   └── test_utils.py
├── .gitignore
└── README.md

هذا الهيكل يتوسع من مشروع هواية إلى قاعدة كود احترافية. ملفات __init__.py (حتى لو كانت فارغة) تخبر Python أن هذه المجلدات هي حزم (packages).

إدارة الاعتمادات بشكل صحيح

استخدام uv

# Add a dependency
uv pip install requests

# Create a requirements file automatically
uv pip freeze > requirements.txt

أو صرح بها في pyproject.toml:

[project]
dependencies = [
    "requests>=2.31.0",
    "pandas>=2.0.0"
]

ثم قم بالتثبيت:

uv pip install -e .

الاختبار: اكتب الاختبارات من اليوم الأول

الاختبار يمنع الأخطاء ويجعل إعادة هيكلة الكود (refactoring) آمنة:

# src/my_project/math_utils.py
def add(a: int, b: int) -> int:
    return a + b
# tests/test_math_utils.py
from my_project.math_utils import add

def test_add():
    assert add(2, 3) == 5
    assert add(-1, 1) == 0
    assert add(0, 0) == 0

تشغيل الاختبارات:

uv pip install pytest
pytest

عادات الاختبار الصغيرة الآن تمنع كوارث كبيرة لاحقاً.

الأخطاء الشائعة (وكيفية تجنبها)

1. استخدام المتغيرات العالمية (Global Variables)

# WRONG: Global counter
counter = 0
def increment():
    global counter  # Ugly and buggy
    counter += 1

# RIGHT: Return values
def increment(counter: int) -> int:
    return counter + 1

يجب أن تكون الدوال مستقلة، ولا تعتمد على حالة عالمية.

2. الأرقام السحرية بدون تفسير

# WRONG: What does 0.08 mean?
tax = price * 0.08

# RIGHT: Named constant
TAX_RATE = 0.08
tax = price * TAX_RATE

الثوابت ذات الأسماء الوصفية تجعل الغرض من الكود واضحاً.

3. تجاهل الحالات الاستثنائية (Edge Cases)

# WRONG: No error handling
def divide(a: float, b: float) -> float:
    return a / b

# RIGHT: Handle division by zero
def divide(a: float, b: float) -> float | None:
    if b == 0:
        return None
    return a / b

الكود الاحترافي يتوقع ما يمكن أن يحدث بشكل خاطئ.

4. عدم استخدام Docstrings

# WRONG: Unclear
def calc(x, y):
    return x * y + x / y

# RIGHT: Clear intent
def calculate_avg_rate(price: float, quantity: int) -> float:
    """Calculate average price per unit.

    Args:
        price: Total price in dollars
        quantity: Number of units

    Returns:
        Average price per unit
    """
    return price / quantity

ستشكر نفسك في المستقبل على توثيق الغرض من الكود اليوم.

مشروع عملي: تطبيق قائمة مهام (Todo List) بأفضل الممارسات

لنقم ببناء مشروع حقيقي باستخدام كل ما تعلمناه:

# src/todoapp/main.py
from typing import Optional
from pathlib import Path
import json

class TodoList:
    """Simple todo list manager"""

    def __init__(self, file_path: Path = Path("todos.json"):
        self.file_path = file_path
        self.todos: list[dict[str, str]] = self._load()

    def _load(self) -> list[dict[str, str]]:
        """Load todos from file"""
        if self.file_path.exists():
            with open(self.file_path) as f:
                return json.load(f)
        return []

    def add(self, task: str) -> None:
        """Add a new todo"""
        self.todos.append({
            "task": task,
            "done": False
        })
        self._save()

    def mark_done(self, index: int) -> bool:
        """Mark todo as complete"""
        if 0 <= index < len(self.todos):
            self.todos[index]["done"] = True
            self._save()
            return True
        return False

    def _save(self) -> None:
        """Save todos to file"""
        with open(self.file_path, 'w') as f:
            json.dump(self.todos, f, indent=2)

    def list_all(self) -> None:
        """Display all todos"""
        for i, todo in enumerate(self.todos, 1):
            status = "✓" if todo["done"] else "○"
            print(f"{i}. {status} {todo['task']}")

if __name__ == "__main__":
    app = TodoList()
    app.add("Learn Python")
    app.add("Build a project")
    app.list_all()

هذا الكود يحتوي على:

  • تلميحات الأنواع في كل مكان
  • Docstrings لكل دالة
  • معالجة الأخطاء
  • إدخال وإخراج الملفات (File I/O)
  • اتفاقيات تسمية صحيحة
  • هيكل قابل للاختبار

مسارات التعلم حسب الهدف

الهدف: مهنة في الذكاء الاصطناعي/تعلم الآلة

  1. إتقان أساسيات Python (هذا الدليل)
  2. تعلم NumPy، و Pandas، و Scikit-learn
  3. دراسة الجبر الخطي والإحصاء
  4. بناء 3–5 مشاريع تعلم آلة لمعرض أعمالك

الهدف: تطوير الويب

  1. أساسيات Python
  2. إطار عمل FastAPI أو Django
  3. SQL وقواعد البيانات
  4. النشر على السحابة (AWS، GCP، Heroku)

الهدف: الأتمتة/السكربتات

  1. أساسيات Python
  2. إدخال وإخراج الملفات و regex
  3. واجهات البرمجة (APIs) وكشط الويب (web scraping) (مع مراعاة الأخلاقيات)
  4. جدولة المهام (cron، APScheduler)

المصادر

  • وثائق Python الرسمية: docs.python.org/3
  • Real Python: دروس شاملة ومكتوبة بشكل جيد
  • Type Hints Guide: mypy.readthedocs.io
  • PEP 8 Style Guide: دليل تنسيق الكود الرسمي لـ Python (PEP = Python Enhancement Proposal)

الخلاصة

تعلم Python بشكل صحيح يعني البدء بـ "أفضل الممارسات"، وليس تعلمها لاحقاً. البيئات الافتراضية (Virtual environments) تعزل المشاريع، و type hints تمنع الأخطاء البرمجية، و linting يضمن الاتساق، والهيكلة السليمة تسمح بالتوسع من مجرد سكربتات بسيطة إلى تطبيقات متكاملة. قد يستغرق الإعداد الصحيح 10 دقائق إضافية، لكنه يوفر ساعات من تصحيح الأخطاء (debugging) لاحقاً. استثمر في العادات الصحيحة الآن، وسيبقى الكود الخاص بك نظيفاً واحترافياً بينما تتطور من مبتدئ إلى مطور.


نشرة أسبوعية مجانية

ابقَ على مسار النيرد

بريد واحد أسبوعياً — دورات، مقالات معمّقة، أدوات، وتجارب ذكاء اصطناعي.

بدون إزعاج. إلغاء الاشتراك في أي وقت.