تقنية

nargs="+" في argparse: هل يقبل الوسيط الموضعي مدخلًا فارغًا؟

واحد على الأقل؛ argparse; item,nargs:+; input:[]; SystemExit:2; stderr:nonempty; stdout:empty
رفض.

المدخل الفارغ لا يكفي للموضعي مع + هنا. [1] [2]

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

لا؛ يحتاج قيمة واحدة على الأقل هنا. [1] [2]

  • المدخل الفارغ لا يكفي للموضعي مع + هنا. [1] [2]
  • على CPython 3.12.14، محلل عادي بموضعي واحد item مع nargs="+"؛ المدخل الصريح []. [1] [2]
  • parse_args([]) يثير SystemExit بالرمز 2، stderr غير فارغ وstdout فارغ هنا. نلتقط الخروج لمتابعة المثال. [1] [2]
  • يجعل + هذا الموضعي مطلوبًا؛ يكشف التحليل غيابه. أما * فيقبل الصفر هنا. [1] [2]
  • تحكم مستقل بموضعي item مع nargs="*"، والمدخل الفارغ نفسه: item=[] من نوع list، دون إخراج من التحليل. لا خيارات أو افتراضيات أو أنواع مخصصة هنا. [1] [2]

قيمة مطلوبة

المدخل الفارغ لا يكفي للموضعي مع + هنا. [1] [2]

الضبط

على CPython 3.12.14، محلل عادي بموضعي واحد item مع nargs="+"؛ المدخل الصريح []. [1] [2]

رفض الفراغ

parse_args([]) يثير SystemExit بالرمز 2، stderr غير فارغ وstdout فارغ هنا. نلتقط الخروج لمتابعة المثال. [1] [2]

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

تحكم مستقل؛ argparse; item,nargs:*; input:[]; item:[]; type:list
قائمة.

قبول الفراغ

يجعل + هذا الموضعي مطلوبًا؛ يكشف التحليل غيابه. أما * فيقبل الصفر هنا. [1] [2]

control=argparse.ArgumentParser() control.add_argument("item",nargs="*") ns=control.parse_args(args) print(ns.item,type(ns.item).__name__) [1] [2]

تحكم مستقل بموضعي item مع nargs="*"، والمدخل الفارغ نفسه: item=[] من نوع list، دون إخراج من التحليل. لا خيارات أو افتراضيات أو أنواع مخصصة هنا. [1] [2]

المراجع

  1. Python argparse
  2. CPython argparse

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

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