为什么我的 argparse 不显示默认值?

cap*_*let 5 python argparse

根据这个问题,当我输入时,这个名为“parse_fail.py”的脚本应该打印 default=1:

python parse_fail.py --help 
Run Code Online (Sandbox Code Playgroud)

在命令行上,但它没有。为什么不?

#parse_fail.py

import argparse
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument("--test", type=int, dest='test', default=1)
parser.parse_args()
args_dict = vars(parser.parse_args())
locals().update(args_dict)
print test
Run Code Online (Sandbox Code Playgroud)

当我运行这个脚本时,我得到:

$ python parser_fail.py  --help
usage: parser_fail.py [-h] [--test TEST]

optional arguments:
  -h, --help   show this help message and exit
  --test TEST
Run Code Online (Sandbox Code Playgroud)

编辑:添加了脚本的输出。

cap*_*let 7

显然,您需要包含一个非空的帮助字符串。

这有效:

import argparse
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument("--test", type=int, dest='test', help="WHY NO DEFAULT???", default=1)
parser.parse_args()
args_dict = vars(parser.parse_args())
locals().update(args_dict)
print test



$ python parser_fail.py -h
usage: parser_fail.py [-h] [--test TEST]

optional arguments:
  -h, --help   show this help message and exit
  --test TEST  WHY NO DEFAULT??? (default: 1)
Run Code Online (Sandbox Code Playgroud)