تقنية

إصدار بايثون: لماذا تقارن 9 و12 بطريقة مختلفة؟

مكونات الصف الحالي نصوص str ويعطي فحص النوع True
نوع المكونات محليًا. [1] [2]

حدد نوع المكونات قبل المقارنة. [1] [2]

الخلاصة السريعة

تعيد python_version_tuple() مكونات نصية. [1] [2]

  • يؤكد اختبار النوع str لكل مكوّن. [1] [2]
  • نؤلف صفين: 3/9/0 و3/12/0. [1] [2]
  • المقارنة النصية بالأكبر تعطي True. [1] [2]
  • بعد تحويل المكونات إلى أعداد تعطي False. [1] [2]
  • اختبرنا 3.12.14؛ المثال لأجزاء رقمية فقط. [1] [2]

المثال

import platform as p
v=p.python_version_tuple()
print(all(isinstance(x,str) for x in v))
a=('3','9','0');b=('3','12','0')
print(a>b)
print(tuple(map(int,a))>tuple(map(int,b)))

[1] [2]

المخرجات True ثم True ثم False. [1] [2]

نص أم عدد؟

يفصل المصدر نص الإصدار بالنقاط. في صفينا تعطي مقارنة النصوص ترتيبًا يخالف ترتيب المكونات العددية. [1] [2]

بعد التحويل، 9 أصغر من 12. لم نغيّر معنى العدد إلى كسر عشري. [1] [2]

مقارنة صفينا 3/9/0 و3/12/0 تعطي True كنص وFalse كأعداد
أجزاء رقمية مؤلفة. [1] [2]

حد المثال

الصفان مدخلان للمقارنة، وليس ناتج الدالة الحالي. لا نعالج الإصدارات التجريبية أو قواعد إصدارات الحزم العامة. [1] [2]

المراجع

  1. Python: platform
  2. CPython 3.12.14: platform.py
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.