تقنية

parse_known_args في argparse: أين تذهب الوسيطات غير المعروفة؟

تحليل جزئي؛ argparse; parse_known_args(); --tag; input:[--tag,bud,--odd,leaf]; tag:bud; extra:[--odd,leaf]
متبقٍ.

تُعاد الوسيطات غير المعروفة ضمن قائمة هنا. [1] [2]

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

في قائمة مع مساحة الأسماء هنا. [1] [2]

  • تُعاد الوسيطات غير المعروفة ضمن قائمة هنا. [1] [2]
  • على CPython 3.12.14، محلل عادي يعرف --tag؛ المدخل ["--tag","bud","--odd","leaf"]. [1] [2]
  • parse_known_args يعطي tag="bud" وextra=["--odd","leaf"] هنا، دون stdout أو stderr. [1] [2]
  • تعيد الدالة مساحة الأسماء وقائمة المتبقي؛ parse_args يفحص المتبقي ويرفضه هنا. مطابقة البادئات تظل مطبقة. [1] [2]
  • تحكم مستقل بالتعريف والمدخل نفسيهما: parse_args يثير SystemExit بالرمز 2، stderr غير فارغ وstdout فارغ. نلتقط الخروج لمتابعة المثال؛ لا اختصار أو تمرير لبرنامج آخر هنا. [1] [2]

المتبقي

تُعاد الوسيطات غير المعروفة ضمن قائمة هنا. [1] [2]

الضبط

على CPython 3.12.14، محلل عادي يعرف --tag؛ المدخل ["--tag","bud","--odd","leaf"]. [1] [2]

إعادة المتبقي

parse_known_args يعطي tag="bud" وextra=["--odd","leaf"] هنا، دون stdout أو stderr. [1] [2]

import argparse,contextlib,io args=["--tag","bud","--odd","leaf"] own=argparse.ArgumentParser() own.add_argument("--tag") ns,extra=own.parse_known_args(args) print(ns.tag,extra) [1] [2]

تحكم مستقل؛ argparse; parse_args(); --tag; same input; SystemExit:2; stderr:nonempty; stdout:empty
خطأ.

رفض المتبقي

تعيد الدالة مساحة الأسماء وقائمة المتبقي؛ parse_args يفحص المتبقي ويرفضه هنا. مطابقة البادئات تظل مطبقة. [1] [2]

control=argparse.ArgumentParser() control.add_argument("--tag") out=io.StringIO();err=io.StringIO() try: with contextlib.redirect_stdout(out),contextlib.redirect_stderr(err): control.parse_args(args) except SystemExit as ex: print(ex.code,bool(err.getvalue()),out.getvalue()=="") [1] [2]

تحكم مستقل بالتعريف والمدخل نفسيهما: parse_args يثير SystemExit بالرمز 2، stderr غير فارغ وstdout فارغ. نلتقط الخروج لمتابعة المثال؛ لا اختصار أو تمرير لبرنامج آخر هنا. [1] [2]

المراجع

  1. Python argparse
  2. CPython argparse

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

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