Еще могу посоветовать argparse. Достаточно много настроек.
import argparse
args = argparse.ArgumentParser()
args.add_argument('-id', nargs=?, default='def', help='Search by id')
search_by_id(id):
print("Функция поиска")
if in_args.id is not 'def' and not None:
search_by_id(in_args.id)
elif in_args.id is None:
print("Enter ID")
elif in_args.id is 'def':
args.print_help()
else:
print("argparse error")
Проверка if/else не может претендовать на идеальную, но поясню дабы сэкономить вам время.
None у опции (в данном случае -id) когда он введен без самого id. То есть script.py -id
'def' - когда опция не была введена. То есть script.py или script.py -version
non None and not 'def' - когда было введено script.py -id