تقنية

choices مع type في argparse: هل تفحص النص أم القيمة المحولة؟

argparse; type=int; choices:[4]; input:["--n","4"]; result:4 int
قبول.

choices تفحص القيمة بعد تحويل type في مثالنا. [1] [2]

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

القيمة المحولة؛ الاختيار هنا عدد صحيح. [1] [2]

  • choices تفحص القيمة بعد تحويل type في مثالنا. [1] [2]
  • على CPython 3.12.14، نعرّف الخيار --n مع type=int وchoices=[4]؛ نمرر ["--n","4"]، أي قيمة نصية مقدمة. [1] [2]
  • التحويل يعطي العدد 4 من نوع int؛ يوجد في choices، فينجح التحليل. [1] [2]
  • مسار القيمة الواحدة يستدعي _get_value ثم _check_value؛ الفحص يأتي بعد التحويل. [1] [2]
  • تحكم بمحلل مستقل: الخيار نفسه وtype=int لكن choices=["4"]؛ المدخل نفسه يرفع ArgumentError لأن 4 لا يساوي "4". ضبطنا exit_on_error=False في المحللين؛ نفحص التخزين العادي مع الحضور فقط. [1] [2]

ترتيب الفحص

choices تفحص القيمة بعد تحويل type في مثالنا. [1] [2]

مدخل نصي

على CPython 3.12.14، نعرّف الخيار --n مع type=int وchoices=[4]؛ نمرر ["--n","4"]، أي قيمة نصية مقدمة. [1] [2]

اختيار عددي

التحويل يعطي العدد 4 من نوع int؛ يوجد في choices، فينجح التحليل. [1] [2]

import argparse own=argparse.ArgumentParser(exit_on_error=False) own.add_argument("--n",type=int,choices=[4]) value=own.parse_args(["--n","4"]).n print(value,type(value).__name__) [1] [2]

argparse; type=int; choices:["4"]; input:["--n","4"]; exit_on_error:False; ArgumentError
رفض.

اختيار نصي

مسار القيمة الواحدة يستدعي _get_value ثم _check_value؛ الفحص يأتي بعد التحويل. [1] [2]

control=argparse.ArgumentParser(exit_on_error=False) control.add_argument("--n",type=int,choices=["4"]) try:control.parse_args(["--n","4"]) except argparse.ArgumentError:print("ArgumentError") [1] [2]

تحكم بمحلل مستقل: الخيار نفسه وtype=int لكن choices=["4"]؛ المدخل نفسه يرفع ArgumentError لأن 4 لا يساوي "4". ضبطنا exit_on_error=False في المحللين؛ نفحص التخزين العادي مع الحضور فقط. [1] [2]

المراجع

  1. Python argparse
  2. CPython argparse

للتوسع: لغات البرمجة.

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