1.参数定义

定义了如下三个参数,其中use_entity_typeuse_entity_idbool 参数。这两个bool型参数的默认值都是True

【Python】python中的argparse包在解析bool型参数时的细节问题_python

2. 命令行传参

这里是vscode中的launch.json 文件中的参数定义,想把下面的两个参数修改成False

【Python】python中的argparse包在解析bool型参数时的细节问题_解决方法_02

3. 运行过程

运行代码,但是发现经过parser.parse_args()之后,参数 use_entity_typeuse_entity_id 值仍未变。这是为什么呢?

【Python】python中的argparse包在解析bool型参数时的细节问题_解决方法_03


原因在于:虽然指定了参数类型是bool,但是无论在命令行中传入何值,parser解析得到的结果始终都是True

4.解决方法

那么有没有什么解决方法呢?有的

使用 action='store_true' 可以帮忙解决这个问题。即将 add_arguments处的定义修改如下:

【Python】python中的argparse包在解析bool型参数时的细节问题_命令行_04


接着传入参数是,直接通过是否给出这个参数名就能解决上面这个问题了。