可选参数:optional arguments,如下面代码段中的:--epochs-taken
位置参数:positional arguments,如下面代码段中的:p1
# demo.py
import argparse
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument("--epochs-taken", default=100, type=int, metavar='N')
parser.add_argument("p1", type=int, metavar='param1')
parser.add_argument("p2", type=int, metavar='param2')
parser.add_argument("p3", type=int)
parser.add_argument('--eest_batch_size', type=int, metavar='N',
help='testing batch size (default: 1)')
args = parser.parse_args('10 5 1 --epochs-taken 20 --eest_batch_size 3'.split())
parser.print_help()
print(args.epochs_taken, args.p1+1, args.p2, args.p3, args.eest_batch_size)
参数metavar的作用:在parser.print_help()的时候,positional arguments只显示metavar的名字,optional arguments 中,变量名和metavar都会显示。
输出如下:
usage: demo.py [-h] [--epochs-taken N] [--eest_batch_size N] param1 param2 p3
positional arguments:
param1
param2
p3
optional arguments:
-h, --help show this help message and exit
--epochs-taken N
--eest_batch_size N testing batch size (default: 1)
20 11 5 1 3
注意:
1)调用参数:--epochs-taken需要用args.epoch_taken,必须用下划线,这是Python变量命名的规则,数字,字母和下划线。
2)参数赋值:赋值如下,和上述的输出结果是一样的。
args = parser.parse_args('10 5 1 --epo 20 --eest 3'.split())