Как установить значение по умолчанию для взаимоисключающей переменной, но отключить его, если аргумент не указан? - PullRequest
1 голос
/ 06 марта 2019

Я новичок в argparse и не знаю, как установить значение по умолчанию для взаимной переменной.В частности:

У меня есть две переменные, и должна быть установлена ​​только одна из них.Например:

import argparse

PARSER = argparse.ArgumentParser()

GROUP = PARSER.add_mutually_exclusive_group()

GROUP.add_argument(
        '--a',
        type=int,
        nargs='?',
        const=1,
        default=1)

GROUP.add_argument(
        '--b',
        type=int)

PARSER.set_defaults(train_pass=1)

Ожидаемое поведение:

  1. Может быть установлено не более одного из a и b.

  2. Если ни a, ни b не установлены, a должно быть по умолчанию 1, а b должно быть None.

  3. Если заданы a или b, другое значение должно быть None.

Однако, даже если я поставлю task.py --b 10, он все равно установит значение a в 1.

Я проверил этот ответ: Установите значение по умолчанию равнымfalse, если другой взаимоисключающий аргумент имеет значение true , но он делает разные вещи.Он хочет, чтобы значение было значением по умолчанию (т. Е. 1 здесь), а не None, когда установлено значение b.

Любая помощь приветствуется.Большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...