【Python知识碎片】parser

argparse模块提供了一个用户友好的命令行交互方式。

1. 使用时,导入模块并实例化一个对象:

#导入模块
import argparse

#实例化对象
parser = argparse.ArgumentParser(description='study argmarse module')

# description - Text to display before the argument help (by default, no text)
print(parser.print_help())

运行后显示为:                

usage: [-h]

study parser module

optional arguments:
  -h, --help  show this help message and exit
None

2. 另一个重要的是使用add_argument()

它定义单个的命令行参数应当如何解析。具体用法如下:

#对于上文定义的parser,调用add_argument()

parser.add_argument('--number',default=1.0,type=float)

这里定义了一个number的参数,默认参数值是1.0,type是float。假设这个python文件名是study_parser.py文件,那么在linux的terminal命令行中可以使用 python study_parser.py --number=2将参数传递进入parser的属性中。

3. parse_args()

获取parser中定义的参数

args = parser.parse_args()
print(args)

打印结果为:

Namespace(number=1.0)
可以看到之前定义的number在namespace中。

4. 为什么在add_argument()中定义参数是--number这里变成了number?

因为命令行对参数的定义通常加上--这个符号。

比如命令行ls命令,如果查询ls命令的帮助通常是使用命令

ls --help

ls也有另一个参数 --all

ls --all

5. 一个完整的例子

在文件demo.py里定义这样一个函数,可以看到这里是定义了一个实例parser并返回parser

import argparse

def get_args_parser():
    parser = argparse.ArgumentParser('model hyper-parameters', add_help=False)

    # Training Parameters
    parser.add_argument('--lr', type=float,default=0.002)
    parser.add_argument('--batch_size', type=float,default=50)
    parser.add_argument('--num_epoch', type=int,default=10)

    return parser

if __name__ == '__main__':

    parser = get_args_parser()
    args  = parser.parse_args()
    print(args)

 运行结果

Namespace(lr=0.002, batch_size=50, num_epoch=10)

将这个文件在linux的terminal命令行中运行:

python demo.py --lr=0.1 --batch_size=60 --num_epoch =30

输出为:

Namespace(batch_size=60.0, lr=0.1, num_epoch=30)

可以发现使用命令行将参数 lr,batch_size,num_epoch三个参数传入到了parser中,这三个参数的默认值发生了改变。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值