Python Glossary English

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Сообщить о неточности