تقنية

argparse في بايثون: type لا يحول كل قيمة افتراضية

النصي أربعة يتحول والعددي أربعة ونصف يبقى عشريًا
الخيار غائب، مع type=int في الحالتين. [1] [2]

اختبر الغياب أيضًا. [1] [2]

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

مع type=int، يحول argparse الافتراضي النصي؛ أما غير النصي فيستخدمه كما هو. [1] [2]

  • الافتراضي '4' يصبح 4 من نوع int. [1] [2]
  • الافتراضي 4.5 يبقى float عند غياب الخيار. [1] [2]
  • تمرير --n 9 يعطي 9 int مع افتراضي 4.5. [1] [2]
  • إذن type=int لا يضمن وحده نوع الناتج عند الغياب. [1] [2]
  • اختبرنا 3.12.14، خيارًا عاديًا بقيمة واحدة؛ دون مساحة أسماء مجهزة مسبقًا. [1] [2]

المثال

import argparse as a
for default in ['4',4.5]:
    p=a.ArgumentParser()
    p.add_argument('--n',
        type=int,default=default)
    x=p.parse_args([]).n
    print(x,type(x).__name__)
x=p.parse_args(['--n','9']).n
print(x,type(x).__name__)

[1] [2]

المخرجات: 4 int، ثم 4.5 float، ثم 9 int. [1] [2]

غياب الخيار

الافتراضي العددي لا يمر عبر المحول. [1] [2]

الحضور

عند تمرير الخيار، يحول المحلل الأخير النص '9'. [1] [2]

غياب الخيار وحضوره مع الافتراضي العددي نفسه
المحلل الأخير: الغياب مقابل --n 9. [1] [2]

المراجعة

اختر افتراضيًا من النوع المطلوب، واختبر الحضور والغياب؛ المثال لا يغطي أفعالًا مخصصة. [1] [2]

المراجع

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

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