پرسش

چطور میشه در argparse آرگومان‌های انتخابی و موقعیتی (اختیاری) رو مدیریت کرد؟

How to handle optional positional arguments in argparse?

در حال استفاده از کتابخانه argparse در پایتون هستم و می‌خوام که یک آرگومان اختیاری و موقعیتی به اسکریپتم اضافه کنم. چطور می‌تونم این کار رو انجام بدم؟ راهی هست که بتونم بدون اینکه این آرگومان رو به عنوان ورودی وارد کنم، باز هم اسکریپت اجرا بشه؟

1403/06/07
پاسخ
رضا دولتی عاشق برنامه نویسی و هوش مصنوعی!
بیوگرافی رضا دولتی

برای اضافه کردن آرگومان‌های اختیاری و موقعیتی در argparse، باید از ترکیبی از nargs و default استفاده کنی. اینجوری می‌تونی آرگومان‌هایی رو تعریف کنی که اگر وارد نشدن، اسکریپت همچنان به خوبی کار کنه. بذار یه مثال ساده برات بزنم:

import argparse
# create parser
parser = argparse.ArgumentParser()
parser.add_argument('my_arg', nargs='?', default='default_value', help='This is an optional positional argument')
args = parser.parse_args()
print(f"The value of my_arg is: {args.my_arg}")

ما یه آرگومان به اسم my_arg تعریف کردیم که اگر وارد نشه، مقدار پیش‌فرضش "default_value" خواهد بود.

نکته مهم اینه که با استفاده از nargs='?' مشخص می‌کنیم که این آرگومان می‌تونه وارد بشه یا نشه، و اگر وارد نشد، مقدار پیش‌فرضی که تو default تعریف کردیم استفاده میشه.

پس، اگر اسکریپت رو اجرا کنی بدون اینکه هیچ آرگومانی بهش بدی، مقدار پیش‌فرض چاپ میشه. اما اگر یک مقدار به my_arg بدی، همون مقدار وارد شده چاپ میشه.

پاسخ: 1403/06/07
آخرین آپدیت: 1403/08/16