Python Glossary English

Python 3.9+argparseпонятие

argparse.BooleanOptionalAction

действия

Действие для флага-переключателя: одна опция --feature создаёт пару --feature / --no-feature, которые ставят True и False.

Синтаксис

parser.add_argument('--feature', action=argparse.BooleanOptionalAction)

Решает классическую ошибку type=bool: bool('False') равно True, потому что непустая строка истинна, и '--flag False' включает флаг. Без указания default значение — None, а не False: так можно отличить «не задано» от «выключено», но проверка 'is False' промахнётся. Если нужен False по умолчанию, задайте default=False явно.

Примеры

import argparse
parser = argparse.ArgumentParser(prog='app')
parser.add_argument('--color', action=argparse.BooleanOptionalAction)
print(parser.parse_args([]))  # → Namespace(color=None)
print(parser.parse_args(['--no-color']))  # → Namespace(color=False)
import argparse
parser = argparse.ArgumentParser(prog='app')
parser.add_argument('--flag', type=bool)
print(parser.parse_args(['--flag', 'False']))  # → Namespace(flag=True) — ловушка type=bool

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности