Вывод значений по умолчанию в 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()

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

Подробнее об этом расскажет наш спикер на видео
skypro youtube speaker

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

Если встроенный форматтер не отвечает всем вашим требованиям, определите свой собственный класс, который будет наследовать 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.
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Как отобразить значения по умолчанию в справке argparse?
1 / 5