Вывод значений по умолчанию в argparse --help: Python
Быстрый ответ
Для отображения значений по умолчанию в справке argparse
, достаточно добавить %(default)s
в параметр help
метода add_argument
. В результате такого изменения значения по умолчанию будут автоматически выводиться при запросе справки с помощью команды --help
.
Вот пример:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--count', type=int, default=10, help='Задайте значение счетчика (по умолчанию: %(default)s)')
args = parser.parse_args()
Для отображения значений по умолчанию, используйте справку --help
к параметру --count
.
Для автоматического отображения более полной информации используйте параметр formatter_class=argparse.ArgumentDefaultsHelpFormatter
при создании экземпляра команды ArgumentParser
. В этом случае значения по умолчанию внесутся в справку по всем параметрам.

Использование formatter_class для автоматизации
Если вы хотите автоматизировать управление параметрами и объединить отображение значений аргументов, то применяйте параметр formatter_class
при создании объекта ArgumentParser
.
Мощь ArgumentDefaultsHelpFormatter
Данный специальный класс ArgumentDefaultsHelpFormatter
автоматизирует процесс дополнения справки информацией о значениях по умолчанию:
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('--size', type=int, default=1024, help='Укажите размер')
args = parser.parse_args()
Каждый параметр к команде будет содержать информацию о своем по умолчанию значении.
Создайте свой форматтер
Если встроенный форматтер не отвечает всем вашим требованиям, определите свой собственный класс, который будет наследовать ArgumentDefaultsHelpFormatter
:
import argparse
class CustomHelpFormatter(argparse.ArgumentDefaultsHelpFormatter):
def _get_help_string(self, action):
help = action.help
if '%(default)s' not in action.help and action.default is not None and action.default is not argparse.SUPPRESS:
help += ' (по умолчанию: %(default)s)'
return help
parser = argparse.ArgumentParser(formatter_class=CustomHelpFormatter)
parser.add_argument('--verbosity', type=int, choices=[0, 1, 2], help='Выберите степень детализации вывода')
args = parser.parse_args()
Теперь вы получили более гибкий контроль над форматированием вывода справки.
Расширенное настройка форматтера через множественное наследование
Для совмещения качеств разных форматтеров используйте множественное наследование. Но будьте аккуратны с внутренними API.
class HybridFormatter(argparse.ArgumentDefaultsHelpFormatter, argparse.RawTextHelpFormatter):
pass
Применив этот подход, можно одновременно отображать значения по умолчанию и сохранять первоначальное форматирование текста.
Визуализация
Процесс отображения значений по умолчанию в справке argparse
можно сравнить с чтением этикетки продуктов в магазине:
Представим себе ситуацию, в которой вы ищете арахисовое масло и просматриваете информацию на упаковке:
| Пищевая ценность | Значение | По умолчанию? |
| ------------------------- | -------- | ------------- |
| Калорийность | 200 | |
| Общее содержание жиров | 16г | ✅ |
| Натрий | 150мг | |
Дополнение параметров командной строки значениями по умолчанию:
python parser.add_argument('--fat', help='Содержание жира (по умолчанию: %(default)s грамм)')
Пользователи сразу видят, что именно предоставляется командой по умолчанию.
### Оформление помощи
С помощью `help` вы можете кратко и ясно представить необходимую информацию:
- **Будьте кратким**: Слишком подробное описание усложняет восприятие.
- **Сосредоточьтесь на цели**: Отметьте причину использования параметра — это значительно улучшает понимание его назначения.
python parser.add_argument('--mode', choices=['safe', 'fast'],
default='safe',
help="Выберите режим: 'safe' — для надежного функционирования (по умолчанию), 'fast' — для быстрого, но с возможностью ошибок")
В этом примере каждая опция ясно объясняется и указывается их применение.
### Избегание распространённых ошибок
Выбирайте значения по умолчанию, которые будут оптимальны для большинства сценариев. Оповещая о предотвращении ошибок, предлагайте наглядные инструкции.
python parser.add_argument('--retry', nargs='?', const=5,
type=int, default=3,
help='Количество попыток при возникающих ошибках (по умолчанию: 3, укажите без значения для увеличения до 5)')
Параметры `nargs` и `const` позволяют выбрать другое распространённое значение быстрее.
## Полезные материалы
1. [argparse — Парсер для параметров командной строки, аргументов и подкоманд](https://docs.python.org/3/library/argparse.html) — официальная документация по модулю **argparse**.
2. [python – Argparse: Как включить значения по умолчанию в '--help'?](https://stackoverflow.com/questions/12151306/argparse-way-to-include-default-values-in-help) – обсуждение на Stack Overflow об интеграции значений по умолчанию в справку.
3. [argparse — Парсинг опций и аргументов командной строки](https://pymotw.com/3/argparse/#adding-argument-defaults-to-help-messages) — руководство по добавлению значений по умолчанию в сообщения помощи.
4. [Учебник по Python – Argparse](https://www.youtube.com/watch?v=cdblJqEUDNo) — видеоурок по использованию аргументов командной строки с `argparse`.
5. [Руководство по Argparse — Документация Python 3.12.1](https://docs.python.org/3/howto/argparse.html#id1) — учебник по использованию подкоманд с `argparse`.
6. [Некоторые полезные приемы с argparse](https://gist.github.com/brantfaircloth/1443543) — практический пример пользовательского действия `argparse`.
7. [Создание интерфейсов командной строки с помощью модуля argparse Python's](https://realpython.com/command-line-interfaces-python-argparse/) — статья о создании интерфейсов командной строки с использованием `argparse`.