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

Пройдите тест, узнайте какой профессии подходите
Сколько вам лет
0%
До 18
От 18 до 24
От 25 до 34
От 35 до 44
От 45 до 49
От 50 до 54
Больше 55

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

Для отображения значений по умолчанию в справке 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. В этом случае значения по умолчанию внесутся в справку по всем параметрам.

Пошаговый план для смены профессии

Использование 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 — Парсер для параметров командной строки, аргументов и подкоманд](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`.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Как отобразить значения по умолчанию в справке argparse?
1 / 5

Загрузка...