تقنية

store_const في argparse: هل تحتاج الراية إلى قيمة؟

راية ثابتة؛ argparse; action:store_const; --mode,const:leaf; nargs:0; input:[--mode]; mode:leaf
ثابت.

store_const يسجل الثابت عند حضور الراية هنا. [1] [2]

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

لا؛ الراية تخزن الثابت دون قيمة مقدمة هنا. [1] [2]

  • store_const يسجل الثابت عند حضور الراية هنا. [1] [2]
  • على CPython 3.12.14، --mode مع action="store_const" وconst="leaf"؛ دون تخصيص nargs. [1] [2]
  • تحليل ["--mode"] يعطي {"mode":"leaf"} في مساحة جديدة؛ لا نمرر قيمة بعد الراية. [1] [2]
  • الفعل يضبط nargs=0 ويسند const لوجهة التخزين؛ الراية لا تستهلك قيمة هنا. [1] [2]
  • تحكم مستقل بالخيار نفسه والتخزين العادي: المدخل بلا قيمة يثير SystemExit بالرمز 2 ويكتب إلى stderr. نلتقط الخروج لمتابعة المثال، دون افتراض النص الكامل للرسالة. [1] [2]

الثابت

store_const يسجل الثابت عند حضور الراية هنا. [1] [2]

الضبط

على CPython 3.12.14، --mode مع action="store_const" وconst="leaf"؛ دون تخصيص nargs. [1] [2]

دون قيمة

تحليل ["--mode"] يعطي {"mode":"leaf"} في مساحة جديدة؛ لا نمرر قيمة بعد الراية. [1] [2]

import argparse,contextlib,io own=argparse.ArgumentParser() own.add_argument("--mode",action="store_const",const="leaf") ns=own.parse_args(["--mode"]) print(vars(ns)) [1] [2]

تحكم مستقل؛ argparse; action:store; --mode; input:[--mode]; SystemExit:2; stderr:nonempty
خطأ.

خيار بقيمة

الفعل يضبط nargs=0 ويسند const لوجهة التخزين؛ الراية لا تستهلك قيمة هنا. [1] [2]

control=argparse.ArgumentParser() control.add_argument("--mode") buf=io.StringIO() try: with contextlib.redirect_stderr(buf): control.parse_args(["--mode"]) except SystemExit as ex: print(ex.code,bool(buf.getvalue())) [1] [2]

تحكم مستقل بالخيار نفسه والتخزين العادي: المدخل بلا قيمة يثير SystemExit بالرمز 2 ويكتب إلى stderr. نلتقط الخروج لمتابعة المثال، دون افتراض النص الكامل للرسالة. [1] [2]

المراجع

  1. Python argparse
  2. CPython argparse

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

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