写小 CLI 时,偶尔会想同时支持 --color 和 --no-color。这个不用自己写两个参数,argparse 自带了。
环境:Python 3.9+,只用标准库。保存成 bool-flag-demo.py:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--color', action=argparse.BooleanOptionalAction, default=True)
args = parser.parse_args()
print(args.color)
可以分别跑:
python bool-flag-demo.py
python bool-flag-demo.py --color
python bool-flag-demo.py --no-color
输出会是 True、True、False。
这种开关比再加一个 --disable-color 顺眼一点,帮助信息里也会自动显示成 --color | --no-color。