تقنية

register في argparse: هل يمكن استعمال اسم نصي بدل محول type؟

اسم مسجل؛ argparse; register:type,bud,int; --n,type:bud; input:[--n,4]; n:4,type:int
تسجيل.

يُقبل اسم type المسجل هنا. [1] [2]

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

نعم، بعد تسجيل الاسم هنا. [1] [2]

  • يُقبل اسم type المسجل هنا. [1] [2]
  • على CPython 3.12.14، نسجل bud تحت type كمحول int قبل تعريف --n؛ محلل عادي. [1] [2]
  • type="bud" يحول النص 4 في ["--n","4"] إلى عدد صحيح 4؛ تبقى خاصية الفعل bud، ويحل المحلل الاسم إلى int. [1] [2]
  • register يخزن المحول في السجل؛ يبحث add_argument عن الاسم ويتحقق من قابليته للاستدعاء. [1] [2]
  • تحكم مستقل بلا تسجيل: تعريف --n مع type="bud" يثير ValueError قبل التحليل، دون stdout أو stderr. لا نعمم على أنواع مخصصة أو إعادة التسجيل. [1] [2]

اسم المحول

يُقبل اسم type المسجل هنا. [1] [2]

الضبط

على CPython 3.12.14، نسجل bud تحت type كمحول int قبل تعريف --n؛ محلل عادي. [1] [2]

تسجيل وتحويل

type="bud" يحول النص 4 في ["--n","4"] إلى عدد صحيح 4؛ تبقى خاصية الفعل bud، ويحل المحلل الاسم إلى int. [1] [2]

import argparse own=argparse.ArgumentParser() own.register("type","bud",int) own.add_argument("--n",type="bud") ns=own.parse_args(["--n","4"]) print(ns.n,type(ns.n).__name__) [1] [2]

تحكم مستقل؛ argparse; --n,type:bud; unregistered; add_argument(); ValueError; before parse
خطأ.

اسم غير مسجل

register يخزن المحول في السجل؛ يبحث add_argument عن الاسم ويتحقق من قابليته للاستدعاء. [1] [2]

control=argparse.ArgumentParser() try: control.add_argument("--n",type="bud") except ValueError: print("ValueError") [1] [2]

تحكم مستقل بلا تسجيل: تعريف --n مع type="bud" يثير ValueError قبل التحليل، دون stdout أو stderr. لا نعمم على أنواع مخصصة أو إعادة التسجيل. [1] [2]

المراجع

  1. Python argparse
  2. CPython argparse

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

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