# إصدارات Python: Python 2 وPython 3، والجديد في 3.10–3.15، وأي إصدار تثبّت

URL: https://skillaria.top/ar/guides/python/python-versions

الفرع المستخدم حالياً هو Python 3، وآخر إصدار مستقر هو Python 3.15 (صدر في 9 أكتوبر 2026)، أما Python 2 فلا يحصل على دعم منذ 2020. يصدر إصدار جديد كل عام في أكتوبر وتصل إليه التحديثات نحو خمس سنوات، لذلك للمشاريع الجديدة ثبّت أحدث إصدار 3.x، ولمعرفة الإصدار الحالي استخدم الأمر python3 --version.

الفرع الحي الوحيد للغة اليوم هو Python 3. آخر إصدار مستقر هو Python 3.15 الذي صدر في 9 أكتوبر 2026، أما Python 2 فقد انتهى دعمه رسمياً منذ عام 2020. فيما يلي الفروق بين إصدارات Python، وما الجديد في كل إصدار من 3.10 إلى 3.15، وأي إصدار تختار، وكيف تعرف الإصدار المثبّت لديك.

## كيف تُرقَّم إصدارات Python

يتكون رقم الإصدار من ثلاثة أرقام، مثل `3.15.0`. الرقم الأول هو الإصدار الرئيسي (فرع اللغة)، والثاني هو الإصدار الفرعي الذي تُضاف فيه ميزات جديدة، والثالث هو رقم التصحيح الذي يحمل إصلاحات الأخطاء فقط. وعندما يقال «إصدارات Python» يُقصد عادةً الإصدارات الفرعية: 3.10 و3.11 و3.12 وهكذا.

منذ عام 2019 يسري دورة سنوية (PEP 602): يصدر إصدار فرعي جديد كل أكتوبر. وقبل الإصدار بنحو ستة أشهر تصدر نسخ ألفا ثم بيتا ثم مرشحو الإصدار، وبعد الإصدار تأتي التصحيحات مثل 3.15.1 و3.15.2. والترقية بينها آمنة، فسلوك اللغة لا يتغير في إصدارات التصحيح.

ومن هنا يأتي الخلط في البحث: «python 311» و«python 3.11» هما الشيء نفسه، أي الإصدار 3.11. فالرقم ليس كسراً عشرياً، لذلك فالإصدار 3.10 أحدث من 3.9، والإصدار 3.15 أحدث من 3.2.

## Python 2 وPython 3: ما الفرق

صدر Python 3 عام 2008 وكسر التوافق مع الإصدارات السابقة عمداً، لإصلاح الحلول القديمة في اللغة. لذلك كثيراً ما يحتاج كود Python 2 إلى تعديل كي يعمل في Python 3. وآخر إصدار من الفرع الثاني هو 2.7، وانتهى دعمه في 1 يناير 2020، وصدر الإصدار النهائي 2.7.18 في أبريل 2020.

| الجانب | Python 2 | Python 3 |
| --- | --- | --- |

| الطباعة | `print "hi"` — عامل | `print("hi")` — دالة |

| النصوص | بايتات افتراضياً، ويُكتب Unicode بالشكل `u"..."` | `str` — دائماً Unicode، والبايتات `bytes` |

| القسمة | `7 / 2` تعطي 3 | `7 / 2` تعطي 3.5، والقسمة الصحيحة `7 // 2` |

| الإدخال | `raw_input()` | `input()` |

| المجالات | `range` تبني قائمة، و`xrange` كسولة | `range` كسولة |

| الدعم | لا يوجد منذ 2020 | إصدار جديد كل عام |

إذا وجدت درساً أو إجابة تُكتب فيها `print` دون أقواس، فهذا كود Python 2 والمادة قديمة. لا فائدة من تعلم الفرع الثاني اليوم: لا يُثبَّت في الأنظمة الجديدة، وتوقفت المكتبات عن دعمه منذ زمن، ولا تحتاج إليه إلا عند نقل كود قديم.

## الجديد في Python 3.10–3.15

فيما يلي أهم ما في كل إصدار، أي ما يغيّر الكود اليومي. وقوائم التغييرات الكاملة موجودة في قسم What's New في التوثيق الرسمي.

### Python 3.10 (أكتوبر 2021)

- مطابقة الأنماط `match`/`case` (PEP 634) — تحليل بنى البيانات بدلاً من سلاسل `if`/`elif`.
- دمج الأنواع بالخط العمودي: `int | None` بدلاً من `Optional[int]` (PEP 604).
- عدة مديري سياق داخل أقواس في عبارة `with` واحدة.
- رسائل أخطاء الصياغة أوضح بكثير.

```
def describe(point):
    match point:
        case (0, 0):
            return "نقطة الأصل"
        case (x, 0):
            return f"على المحور X: {x}"
        case _:
            return "في مكان آخر"

print(describe((3, 0)))  # على المحور X: 3
```

### Python 3.11 (أكتوبر 2022)

- السرعة: ساهم مشروع Faster CPython في تسريع المفسِّر بنحو الربع في المتوسط، وأكثر في بعض المهام.
- مؤشرات دقيقة في الـtraceback: الأسهم `^^^^` تُظهر التعبير الذي سقط بالضبط في السطر (PEP 657).
- مجموعات الاستثناءات و`except*` (PEP 654)، وملاحظات على الاستثناءات عبر `add_note()`.
- وحدة `tomllib` لقراءة TOML — مثل ملف `pyproject.toml`.

### Python 3.12 (أكتوبر 2023)

- صياغة جديدة للأنواع العامة: `def first[T](items: list[T]) -> T` والعامل `type` للأسماء المستعارة للأنواع (PEP 695).
- f-strings أصبحت قواعد نحوية كاملة (PEP 701): يمكن داخلها استخدام الاقتباسات نفسها، والأسطر المتعددة، والتعليقات.
- حُذفت الوحدة القديمة `distutils` من المكتبة القياسية.
- تلميحات أكثر تفصيلاً في الأخطاء، مثل «نسيت استيراد الوحدة؟».

```
type Pair = tuple[int, int]

def first[T](items: list[T]) -> T:
    return items[0]

songs = ["a", "b"]
print(f"الأولى: {first(songs)!r}، والعدد {len(songs)}")
print(f"{"اقتباس داخل"}")  # يعمل من 3.12
```

وبالمناسبة، عن السؤال الشائع «f-strings من أي إصدار»: ظهرت f-strings أصلاً في Python 3.6، أما الحرية في الاقتباسات والأسطر داخل الأقواس المعقوفة فقد أضافها الإصدار 3.12.

### Python 3.13 (أكتوبر 2024)

- وحدة تفاعلية جديدة: ألوان، وتحرير متعدد الأسطر، وسجل أوامر، والأمران `exit` و`help` دون أقواس.
- بناء تجريبي بلا GIL (free-threaded، PEP 703) ومترجم JIT تجريبي (PEP 744).
- حُذفت «البطاريات الميتة» — وحدات قديمة مثل `cgi` و`telnetlib` (PEP 594).
- مدة تصحيح الأخطاء للإصدارات الجديدة صارت سنتين.

### Python 3.14 (أكتوبر 2025)

- سلاسل القوالب، t-strings: `t"مرحباً، {name}"` تعيد كائن قالب يمكن معالجته بأمان، لا نصاً جاهزاً (PEP 750).
- تأجيل حساب التلميحات (PEP 649) — مشكلات أقل في الأنواع المعرّفة أسفل الملف.
- بناء بلا GIL توقف عن كونه تجريبياً وحصل على دعم رسمي.
- وحدة `compression.zstd`، وتلوين الصياغة في الوحدة التفاعلية، و`except A, B:` دون أقواس.

### Python 3.15 (9 أكتوبر 2026)

- الاستيراد الكسول `lazy import` (PEP 810): يُحمَّل الوحدة عند أول استخدام لا عند البدء. وفي القياس الوارد في الدورة بدأ سكربت فيه `lazy import pandas` خلال 14 مللي ثانية بدلاً من 280 مللي ثانية.
- القاموس الثابت المدمج `frozendict` (PEP 814).
- فك التغليف داخل قوائم الإدراج: `[*g for g in groups]` (PEP 798).
- أداة القياس بالعينات Tachyon في المكتبة القياسية (PEP 799).
- UTF-8 افتراضياً عند العمل مع الملفات (PEP 686) — نهاية مفاجآت الترميز على Windows.
- اقتراحات «Did you mean» الجديدة في رسائل الأخطاء.

```
lazy import json                    # PEP 810
cfg = frozendict(limit=500)         # PEP 814
flat = [*g for g in [[1, 2], [3]]]  # PEP 798 -> [1, 2, 3]
print(flat, cfg["limit"])
# python -m profiling.sampling run app.py   # PEP 799, Tachyon
```

هذا الكود يعمل فقط على 3.15: في الإصدارات الأقدم تعطي `lazy import` وفك التغليف داخل comprehension خطأ `SyntaxError`، ويعطي `frozendict` خطأ `NameError`.

## مواعيد دعم إصدارات Python

يعيش كل إصدار نحو خمس سنوات. يحصل أولاً على إصلاحات الأخطاء المعتادة وإصدارات التصحيح المنتظمة (منذ 3.13 لمدة سنتين)، ثم على تحديثات الأمان فقط حتى نهاية المدة. بعدها يُعد الإصدار منتهي العمر (end-of-life): لا يسد أحد الثغرات فيه بعد ذلك.

| الإصدار | الصدور | نهاية الدعم | الحالة في أكتوبر 2026 |
| --- | --- | --- | --- |

| 2.7 | 2010 | يناير 2020 | غير مدعوم |

| 3.9 | أكتوبر 2020 | أكتوبر 2025 | غير مدعوم |

| 3.10 | أكتوبر 2021 | أكتوبر 2026 | الدعم ينتهي |

| 3.11 | أكتوبر 2022 | أكتوبر 2027 | تحديثات الأمان فقط |

| 3.12 | أكتوبر 2023 | أكتوبر 2028 | تحديثات الأمان فقط |

| 3.13 | أكتوبر 2024 | أكتوبر 2029 | إصلاحات الأخطاء |

| 3.14 | أكتوبر 2025 | أكتوبر 2030 | إصلاحات الأخطاء |

| 3.15 | أكتوبر 2026 | أكتوبر 2031 | الأحدث |

تُنشر الحالة المحدّثة لكل فرع في صفحة Status of Python versions في دليل مطوّري Python. وقبل اختيار إصدار لمشروع طويل الأمد يُستحسن الاطلاع عليها.

## أي إصدار من Python تثبّت

للتعلم والمشاريع الجديدة ثبّت آخر إصدار مستقر، وهو الآن Python 3.15. حجة «سأختار 3.10 المجرّب» لا تصلح: ففي أكتوبر 2026 يتوقف عن تلقي حتى تحديثات الأمان، وتعلم اللغة على إصدار يغادر الدعم يعني إعادة التعلم لاحقاً. وداخل Python 3 التوافق جيد: الكود المكتوب لإصدار قديم يعمل غالباً على الجديد، والعكس غير صحيح.

وهناك استثناءات. إذا لم تصدر المكتبة المطلوبة حزمها المبنية لأحدث إصدار بعد (وهذا يحدث في الأسابيع الأولى بعد إصدار أكتوبر للحزم التي تحتوي امتدادات بلغة C)، فخذ الإصدار السابق 3.14. وعلى خادم طويل العمر اتبع الإصدار الموجود في مستودعات توزيعة النظام، أو ثبّت الإصدار المطلوب عبر مدير الحزم uv. والقاعدة الأهم: لا تختار إصداراً تبقى على نهاية دعمه أقل من سنة.

| الموقف | ما الذي تثبّته |
| --- | --- |

| تتعلم اللغة من الصفر | آخر إصدار مستقر (3.15) |

| مشروع جديد | الأحدث أو الذي قبله |

| المكتبة لا تدعم الجديد | الإصدار الفرعي السابق |

| مشروع قديم على 3.10 أو أقل | التخطيط للانتقال إلى إصدار مدعوم |

| كود Python 2 | نقله إلى Python 3 |

## كيف تعرف إصدار Python

في الطرفية يكفي أمر واحد. على macOS وLinux يُستخدم عادةً الأمر `python3`، وعلى Windows الأمر `python` أو المشغّل `py`.

```
$ python3 --version
Python 3.12.3        # إصدار قديم، حان وقت التحديث

$ python3 -V
Python 3.15.0
```

على Windows يعرض المشغّل كل الإصدارات المثبّتة دفعة واحدة، ويعرض uv الإصدارات التي يراها ويستطيع تثبيتها:

```
py --list
uv python list
```

من داخل البرنامج يعطي الإصدار الوحدة `sys`. ويسهل مقارنة الصف `sys.version_info` كي يتحقق السكربت بنفسه من ملاءمة المفسِّر:

```
import sys

print(sys.version)            # السطر الكامل مع تاريخ البناء
print(sys.version_info[:3])   # مثلاً (3, 15, 0)

if sys.version_info < (3, 10):
    raise SystemExit("مطلوب Python 3.10 أو أحدث")
```

إذا كان الأمر `python3 --version` يعرض إصداراً غير الذي ثبّته، فهذا يعني أن مفسِّراً آخر هو الأول في PATH. ولمعرفة أيّ مفسِّر هو، استخدم `which python3` على macOS وLinux، أو `where python` على Windows.

## عدة إصدارات على حاسوب واحد

وجود 3.13 و3.15 معاً أمر عادي: يُثبَّت كل إصدار في مجلد خاص. وأسهل طريقة لإدارتها هي uv: الأمر `uv python install 3.15` ينزّل الإصدار، والأمر `uv python pin 3.15` يثبّته للمشروع في الملف `.python-version`. ويُستحسن ألا تلمس Python النظام على Linux ولا تحدّثه يدوياً، فعليه تعمل أدوات نظام التشغيل نفسه.

الحد الأدنى لإصدار المشروع يُحدَّد في `pyproject.toml` في الحقل `requires-python`. عندها لن يسمح مدير الحزم بتثبيت المشروع على مفسِّر غير مناسب.

```
[project]
name = "expenses"
version = "0.1.0"
requires-python = ">=3.15"
```

## الخلاصة

الإصدارات المستخدمة اليوم تنتمي إلى الفرع 3، وأحدثها 3.15 مع الاستيراد الكسول و`frozendict` وUTF-8 افتراضياً. انتهى دعم Python 2 في 2020، ويتوقف دعم 3.10 في أكتوبر 2026، لذلك يُستحسن التعلم وبدء المشاريع على إصدار حديث. ولمعرفة إصدارك استخدم `python3 --version`. وفي الدورة يُختتم كل موضوع بكتلة «الجديد في 3.10–3.15»، فتُشرح تغييرات الإصدارات عملياً.

## FAQ

**ما هو IDLE Python 3.10 64-bit في قائمة ابدأ؟**

هذه بيئة التطوير البسيطة المدمجة التي يثبّتها المثبّت من python.org، ويذكر الاسم إصدار المفسِّر وعدد البتات. إذا كان فيه 3.10 فأنت على إصدار ينتهي دعمه، والأفضل تثبيت إصدار حديث.

**هل يمكن ترقية Python 3.12 إلى 3.15 فوق القديم؟**

الإصدارات الفرعية تُثبَّت جنباً إلى جنب، لا فوق بعضها: بعد تثبيت 3.15 يبقى القديم، ويمكن حذفه منفصلاً. ويجب تثبيت المكتبات للإصدار الجديد من جديد، أو إعادة إنشاء البيئة الافتراضية.

**ما الفرق بين الإصدار 64-bit و32-bit؟**

الإصدار 64-bit يستطيع استخدام ذاكرة أكبر ويناسب كل الحواسيب الحديثة، أما 32-bit فيُختار فقط للأنظمة القديمة جداً.

**ما فائدة إصدارات ألفا وبيتا؟**

هي إصدارات أولية من الإصدار التالي لاختبار المكتبات والمشاريع؛ للتعلم والعمل اختر الإصدارات النهائية فقط.


---
Source: Skillaria.Top (https://skillaria.top)
