有些脚本配置开关时,会同时想要 --cache 和 --no-cache,手写两个参数容易把默认值绕晕。Python 3.9+ 的 argparse.BooleanOptionalAction 可以一次生成正反两个选项。
环境:Python 3.10+,Linux/macOS/Windows,只用标准库。保存为 bool-option-demo.py:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument(
"--cache",
action=argparse.BooleanOptionalAction,
default=True,
help="enable or disable local cache",
)
args = parser.parse_args()
print(f"cache={args.cache}")
跑一下:
python3 bool-option-demo.py
python3 bool-option-demo.py --no-cache
python3 bool-option-demo.py --cache
输出类似:
cache=True
cache=False
cache=True
这个小功能挺适合命令行工具里的默认开启项,比如缓存、彩色输出、自动重试。比自己写 store_true + store_false 少一点样板,也不容易把默认值写反。