简单使用
import argparse
parser = argparse.ArgumentParser(description="Deep Gaussian Processes on MNIST")
parser.add_argument("-n", "--num-epochs", default=5, type=int)
parser.add_argument("-t", "--num-iters", default=60, type=int)
parser.add_argument("-b", "--batch-size", default=1000, type=int)
parser.add_argument("-lr", "--learning-rate", default=0.01, type=float)
args = parser.parse_args()
print(args.num_epochs)
输出结果:
5
用户指定参数
接着上面的例子,假设这个python文件的名字叫做main.py。我们如果需要在运行时改变参数的值,可以如下:
python main.py -n 6 -t 100
python main.py --num-epochs 6 --num-iters 100
下面这个不是开头的那个例子,其比较特殊,但是后面会用到。
python main.py -x
可以看到,其特殊之处在于后面没有跟需要指定的值。先透露一下,其实这个我们并不少见,回想linux的风格即可。
参数
从上面我们可以看到add_argument 有很多的接口选项,例如default,type 等等,其各自有什么用呢?
- 第一个"-x",只作为python系统读取输入时的简写。
- 第二个"–xxx",作为这个参数的真正名字,即使用这个参数的时候为args.xxx,而不是args.x。
- default,即这个参数的默认值。
- type,参数的数据类型,例如int,float,str,list等。
- required,默认为false,如果为true,并且没有默认值,表示这个参数用户必须指定,否则程序报错。
- action,action=‘store_true’/‘store_false’。使用这个选项的参数必须为布尔变量。其中store_true表示:用户指定了这个参数,那么这个参数就为true。什么叫用户指定了?例如上面这个特殊的例子,python main.py -x,其指定了x,那么x就会变成True。同理store_false。
- choice,即参数的取值范围,可以帮你自动判断是否越界。例如[1,2],表示只可以取值1或者2。
- help,参数的解释,相当于是注释作用,怕自己忘了。
- nargs,取值可以是["*","+",正整数]等,就是说这个参数是一个列表,"*"表示任意个参数。“+”表示至少一个参数。正整数表示这么多个参数。假设这个参数名字叫做people,且nargs=2。那么命令如下:python main.py --people x y。那么people=[“x”,“y”]。
本文只说了一些常见的参数以及函数。
其实还有一些其他参数,这里不一一列举,再比如 nargs的取值还可以是“?"。这些具体什么含义,以及例子,强烈推荐大家参考python的官方文档https://docs.python.org/3/。这个东西永远是最好的。
|