أي بايثون تختار: 2.x أم 3.x؟ دليل شامل للمبتدئين

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

تم إطلاق Python 2 في عام 2000، وظل لفترة طويلة الأداة الرئيسية لملايين المطورين حول العالم. في عام 2008، ظهر إصدار جديد جذريًا — Python 3، الذي قدم تحسينات كبيرة في بنية اللغة.

لم يكن Python 3 متوافقًا تمامًا مع Python 2 في البداية، مما أثار جدلاً في مجتمع المطورين وأبطأ اعتماده على نطاق واسع. ومع ذلك، على مدى أكثر من 15 عامًا، أصبح Python 3 المعيار الصناعي بلا منازع.

تاريخ ظهور Python 3

كان إنشاء Python 3 ضروريًا لإزالة العيوب المعمارية الأساسية في Python 2 التي أعاقت تطور اللغة:

تحسين دعم Unicode — يعمل Python 3 مع سلاسل Unicode افتراضيًا، وهو أمر بالغ الأهمية للتطبيقات الحديثة متعددة اللغات.

تحسين التعامل مع أنواع البيانات — فصل أوضح بين البايتات والسلاسل النصية، وإزالة الغموض في التصنيف.

توحيد بناء الجملة والدلالات — إزالة التناقضات في اللغة، وإنشاء هيكل أكثر منطقية وقابلية للتنبؤ.

الفروقات الرئيسية بين Python 2 و Python 3

التعامل مع النصوص والتشفير

Python 2:

print type("نص")  # <type 'str'>
print type(u"نص")  # <type 'unicode'>

Python 3:

print(type("نص"))  # <class 'str'> - Unicode افتراضيًا
print(type(b"نص"))  # <class 'bytes'>

يدعم Python 3 Unicode بشكل أصلي، مما يحل العديد من مشاكل التشفير التي كانت شائعة في Python 2.

العمليات الحسابية

Python 2:

print 5 / 2    # 2 (قسمة صحيحة)
print 5.0 / 2  # 2.5 (قسمة بأرقام عشرية)

Python 3:

print(5 / 2)   # 2.5 (قسمة حقيقية)
print(5 // 2)  # 2 (قسمة صحيحة)

في Python 3، يُرجع العامل / دائمًا نتيجة برقم عشري، مما يجعل السلوك أكثر قابلية للتنبؤ.

التغييرات في بناء الجملة

دالة print:

# Python 2
print "مرحبًا بالعالم!"

# Python 3
print("مرحبًا بالعالم!")

دالة input:

# Python 2
name = raw_input("أدخل الاسم: ")  # سلسلة نصية
age = input("أدخل العمر: ")   # تنفيذ eval()

# Python 3
name = input("أدخل الاسم: ")      # دائمًا سلسلة نصية
age = int(input("أدخل العمر: "))  # تحويل صريح

المكررات والمولدات

Python 2:

range(5)        # يُرجع قائمة [0, 1, 2, 3, 4]
xrange(5)       # يُرجع مولدًا
keys = dict.keys()  # يُرجع قائمة

Python 3:

range(5)        # يُرجع مولدًا
list(range(5))  # [0, 1, 2, 3, 4]
keys = dict.keys()  # يُرجع عرض القاموس

الوضع الحالي لدعم الإصدارات

انتهاء دعم Python 2

في 1 يناير 2020، أوقفت Python Software Foundation رسميًا دعم Python 2.7. وهذا يعني:

  • عدم وجود تحديثات أمنية
  • وقف تطوير الميزات الجديدة
  • عدم وجود إصلاحات للأخطاء الحرجة
  • وقف الدعم من المكتبات الرئيسية

التطوير النشط لـ Python 3

يستمر Python 3 في التطور بنشاط مع تحديثات منتظمة:

  • Python 3.12 (2023) — تحسينات في الأداء وميزات جديدة للتصنيف
  • Python 3.13 (2024) — مترجم JIT تجريبي

المدونات

توصيات الكتب