Python中argparse使用的时候用-还是用--?

在文件test.py中,

import argparse

parser = argparse.ArgumentParser(description="SSc score prediction.")
parser.add_argument( '-f', '--fold',choices=(1,2,3,4,5), help='5-fold training', type=int, default=2)  # 这里'-f'和'--fold'可以只保留一个,或者都保留。只保留一个的话,args就会存在响应的属性args.f或者args.fold。如果都保留的话,并不会同时存在2个属性,而是会存在args.fold这一个。
args = parser.parse_args()

a = args.fold  # 注意这里写a = args.f会报错,当有--fold和-f同时存在的时候,只会有args.fold而没有args.f
print(a)

上面这个代码是使用argparse的典型用法。因为代码中用了-f和–fold两种参数,所以可以通过以下方式运行这个文件:

python test.py -f=3 # okay
python test.py -f 3 # okay
python test.py --fold=3  # okay
python test.py --fold 3 # okay
python test.py --f 3 # okay, but nor recommended
python test.py -fold 3 # okay

python test.py -f==3 # wrong
python test.py --fold==3 # wrong

如果把代码改成:

import argparse

parser = argparse.ArgumentParser(description="SSc score prediction.")
parser.add_argument('--fold',choices=(1,2,3,4,5), help='5-fold training', type=int, default=2)
args = parser.parse_args()

a = args.fold
print(a)

这个时候就只能使用python test.py --fold=3这种方式来运行,不能再用-f=3了,因为-f根本没有定义。

上一篇:vim 代码中高效使用折叠fold


下一篇:sklearn自学指南(part58)--交叉验证(评估估计器的性能)