0Pricing
Python Academy · درس

الأوامر الفرعية والخيارات

أنشئ واجهات سطر أوامر معقّدة

الأوامر الفرعية والخيارات درس مجاني في Python Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Python Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Python Academy 4 دروس في المجموع.

لماذا الأوامر الفرعية؟

تحتوي أدوات مثل git على أوامر فرعية، مثل git add وgit commit. يدعم argparse ذلك من خلال المحللات الفرعية، بحيث يمتلك كل أمر فرعي وسائطه الخاصة.

import argparse

parser = argparse.ArgumentParser(prog='tool')
sub = parser.add_subparsers(dest='command')
print('subparsers ready')

إضافة المحللات الفرعية

تعيد add_subparsers كائنًا تنشئ دالته add_parser كل أمر فرعي. وتخزّن dest الأمر الذي اختاره المستخدم.

import argparse

parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='command')
sub.add_parser('start')
sub.add_parser('stop')
args = parser.parse_args(['start'])
print('command:', args.command)

وسائط خاصة بكل أمر فرعي

يمكن لكل محلل فرعي تعريف وسائطه الخاصة. يأخذ الأمر الفرعي add هنا اسمًا، بينما لا يأخذ list أي وسائط.

import argparse

parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='command')
p_add = sub.add_parser('add')
p_add.add_argument('name')
sub.add_parser('list')
args = parser.parse_args(['add', 'milk'])
print(args.command, args.name)

توجيه التنفيذ حسب الأمر

بعد التحليل، استخدم args.command لتحديد المنطق المناسب وتشغيله.

import argparse

parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='command')
p_add = sub.add_parser('add')
p_add.add_argument('item')
sub.add_parser('clear')

args = parser.parse_args(['add', 'eggs'])
if args.command == 'add':
    print('adding', args.item)
elif args.command == 'clear':
    print('clearing all')

استخدام set_defaults لمعالجات الأوامر

من الأنماط النظيفة إرفاق دالة بكل محلل فرعي باستخدام set_defaults(func=...)، ثم استدعاء args.func(args).

import argparse

def do_hi(args):
    print('hi', args.who)

parser = argparse.ArgumentParser()
sub = parser.add_subparsers()
p = sub.add_parser('hi')
p.add_argument('who')
p.set_defaults(func=do_hi)

args = parser.parse_args(['hi', 'Ana'])
args.func(args)

الخيارات المشتركة باستخدام المحللات الأصلية

يحتوي المحلل الأصلي على الخيارات المشتركة بين عدة أوامر فرعية، مما يتجنب التكرار. مرر parents=[base] وadd_help=False.

import argparse

base = argparse.ArgumentParser(add_help=False)
base.add_argument('--verbose', action='store_true')

parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='cmd')
sub.add_parser('run', parents=[base])
args = parser.parse_args(['run', '--verbose'])
print(args.cmd, args.verbose)

القيم الافتراضية لكل خيار

يمكن أن تكون لخيارات الأوامر الفرعية قيمها الافتراضية وأنواعها الخاصة، تمامًا مثل الوسائط ذات المستوى الأعلى.

import argparse

parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='cmd')
p = sub.add_parser('scale')
p.add_argument('--factor', type=float, default=1.0)
args = parser.parse_args(['scale'])
print('factor:', args.factor)

إضافة الخيارات المتكررة

يتيح action='append' تمرير العلم عدة مرات، بحيث تُجمع كل قيمة في قائمة.

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--tag', action='append', default=[])
args = parser.parse_args(['--tag', 'a', '--tag', 'b'])
print(args.tag)

عدّ الأعلام

يحسب action='count' عدد مرات ظهور العلم، وهو نمط مستوى التفصيل الشائع -vvv.

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('-v', action='count', default=0)
args = parser.parse_args(['-v', '-v', '-v'])
print('verbosity level:', args.v)

أداة بأمرين

يؤدي الجمع بين الأوامر الفرعية ومعالجاتها والخيارات المشتركة إلى إنشاء CLI منظّم متعدد الأوامر.

import argparse

def add(args):
    print('add', args.item, 'qty', args.qty)

def remove(args):
    print('remove', args.item)

parser = argparse.ArgumentParser()
sub = parser.add_subparsers()
pa = sub.add_parser('add')
pa.add_argument('item')
pa.add_argument('--qty', type=int, default=1)
pa.set_defaults(func=add)
pr = sub.add_parser('remove')
pr.add_argument('item')
pr.set_defaults(func=remove)

args = parser.parse_args(['add', 'pen', '--qty', '3'])
args.func(args)

أمر فرعي مطلوب

اضبط required=True على المحللات الفرعية حتى يُلزم المستخدم باختيار أمر، وإلا فسيُصدر argparse خطأ.

import argparse

parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='cmd', required=True)
sub.add_parser('go')
args = parser.parse_args(['go'])
print('chosen:', args.cmd)

اختبار سريع

اختبر مدى فهمك للأوامر الفرعية والخيارات.

مراجعة

لقد تعلمت الأوامر الفرعية والخيارات:

  • ينشئ add_subparsers وadd_parser أدوات متعددة الأوامر.
  • يوجّه set_defaults(func=...) التنفيذ إلى معالجات الأوامر.
  • تشارك المحللات الأصلية الخيارات الشائعة.
  • تتعامل الإجرائيتان append وcount مع الأعلام المتكررة.

التالي: مكتبة Click لإنشاء واجهات CLI باستخدام المزيّنات.

الأسئلة الشائعة

هل درس «الأوامر الفرعية والخيارات» مجاني؟

نعم — نص درس «الأوامر الفرعية والخيارات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Python Academy 4 دروس في المجموع.

ماذا ستتعلم في «الأوامر الفرعية والخيارات»؟

أنشئ واجهات سطر أوامر معقّدة تتمرن على Python Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Python Academy؟

لا تُشترط خبرة سابقة. Python Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «الأوامر الفرعية والخيارات»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Python Academy هذا؟

نعم. كل درس في Python Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أساسيات argparse
  2. الأوامر الفرعية والخيارات
  3. مكتبة Click
  4. مخرجات الطرفية المنسّقة
← العودة إلى Python Academy