Вывод значений по умолчанию в argparse --help: Python

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для отображения значений по умолчанию в справке argparse, достаточно добавить %(default)s в параметр help метода add_argument. В результате такого изменения значения по умолчанию будут автоматически выводиться при запросе справки с помощью команды --help.

Вот пример:

Python
Скопировать код
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. В этом случае значения по умолчанию внесутся в справку по всем параметрам.

Кинга Идем в IT: пошаговый план для смены профессии

Использование formatter_class для автоматизации

Если вы хотите автоматизировать управление параметрами и объединить отображение значений аргументов, то применяйте параметр formatter_class при создании объекта ArgumentParser.

Мощь ArgumentDefaultsHelpFormatter

Данный специальный класс ArgumentDefaultsHelpFormatter автоматизирует процесс дополнения справки информацией о значениях по умолчанию:

Python
Скопировать код
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('--size', type=int, default=1024, help='Укажите размер')
args = parser.parse_args()

Каждый параметр к команде будет содержать информацию о своем по умолчанию значении.

Создайте свой форматтер

Если встроенный форматтер не отвечает всем вашим требованиям, определите свой собственный класс, который будет наследовать ArgumentDefaultsHelpFormatter:

Python
Скопировать код
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.

Python
Скопировать код
class HybridFormatter(argparse.ArgumentDefaultsHelpFormatter, argparse.RawTextHelpFormatter):
    pass

Применив этот подход, можно одновременно отображать значения по умолчанию и сохранять первоначальное форматирование текста.

Визуализация

Процесс отображения значений по умолчанию в справке argparse можно сравнить с чтением этикетки продуктов в магазине:

Markdown
Скопировать код
Представим себе ситуацию, в которой вы ищете арахисовое масло и просматриваете информацию на упаковке:

| Пищевая ценность         | Значение | По умолчанию? |
| ------------------------- | -------- | ------------- |
| Калорийность             | 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 — Парсер для параметров командной строки, аргументов и подкоманд — официальная документация по модулю argparse.
  2. python – Argparse: Как включить значения по умолчанию в '--help'? – обсуждение на Stack Overflow об интеграции значений по умолчанию в справку.
  3. argparse — Парсинг опций и аргументов командной строки — руководство по добавлению значений по умолчанию в сообщения помощи.
  4. Учебник по Python – Argparse — видеоурок по использованию аргументов командной строки с argparse.
  5. Руководство по Argparse — Документация Python 3.12.1 — учебник по использованию подкоманд с argparse.
  6. Некоторые полезные приемы с argparse — практический пример пользовательского действия argparse.
  7. Создание интерфейсов командной строки с помощью модуля argparse Python's — статья о создании интерфейсов командной строки с использованием argparse.