Python 3.3+argparseпонятие
argparse.MetavarTypeHelpFormatter
форматтеры справки
Форматтер справки, который подписывает значение аргумента именем его типа: --n int вместо --n N.
Синтаксис
argparse.ArgumentParser(formatter_class=argparse.MetavarTypeHelpFormatter)
Он берёт type.__name__ у каждого аргумента, поэтому падает AttributeError, если хоть у одного аргумента type не задан (type=None) — а это любой аргумент со строковым значением по умолчанию. Для лямбды в справке появится некрасивое '<lambda>'. Значит, форматтер годится, только когда type указан всем аргументам явно, включая type=str.
Примеры
import argparse
parser = argparse.ArgumentParser(
prog='app', formatter_class=argparse.MetavarTypeHelpFormatter)
parser.add_argument('--n', type=int)
print(parser.format_usage()) # → usage: app [-h] [--n int]
import argparse
parser = argparse.ArgumentParser(
prog='app', formatter_class=argparse.MetavarTypeHelpFormatter)
parser.add_argument('--name') # type не задан
try:
parser.format_help()
except AttributeError as e:
print(type(e).__name__) # → AttributeError
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности