تقنية

argparse في بايثون: هل choices تفحص الافتراضي؟

افتراضي خارج الاختيارات عند الغياب
غياب الخيار. [1] [2]

غياب الخيار يختلف عن تمرير قيمته. [1] [2]

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

لا تفحص choices افتراضي خيارنا العادي عند غيابه. [1] [2]

  • المسموح leaf؛ الافتراضي bud. [1] [2]
  • التحليل بقائمة فارغة يعيد bud. [1] [2]
  • تمرير --tag bud يرفع ArgumentError. [1] [2]
  • ضبطنا exit_on_error=False؛ تحكم --tag leaf ينجح. [1] [2]
  • خيار غير مطلوب بلا type أو مساحة أسماء مجهزة؛ الإصدار 3.12.14. [1] [2]

المثال

import argparse as a
p=a.ArgumentParser(
    exit_on_error=False)
p.add_argument("--tag",
    choices=["leaf"],
    default="bud")
print(p.parse_args([]).tag)
try:
    p.parse_args(["--tag","bud"])
except a.ArgumentError:
    print("ArgumentError")

[1] [2]

مساران للقيمة

المصدر يملأ القيمة الافتراضية عند الغياب؛ مسار القيمة المقدمة يفحص الاختيارات. لذلك يطبع المثال bud ثم ArgumentError، رغم تطابق النص المرفوض مع الافتراضي. [1] [2]

القيمة المقدمة نفسها ترفع خطأ
حضور الخيار. [1] [2]

التحكم والنطاق

تمرير --tag leaf يعيد leaf. تعطيل الخروج يتيح التقاط خطأ الاختيار هنا. نفحص فعل التخزين العادي وقوائم صريحة؛ لا نعمم على كل أفعال المحلل. [1] [2]

المراجع

  1. Python 3.12: argparse choices/default
  2. CPython 3.12.14: argument defaults and choices
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

للتوسع: بحث عن لغات البرمجة

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