Python argparse命令行参数解析包的详解

先不使用argparse模块,我们定义一个计算长方体体积的函数volumen_of_cuboid,计算其体积,代码如下:

def volumen_of_cuboid(length, width, height):
    volumen = length * width * height
    return volumen

if __name__ =="__main__":
    print(volumen_of_cuboid(3,4,5))

运行结果为:
在这里插入图片描述

接下来,我们将其改成使用argparse命令行参数解析包的代码,

import argparse

parser = argparse.ArgumentParser(description='volumen_of_cuboid') #创建一个解析对象parser,可以认为是一个装载参数的容器
parser.add_argument('length', type=int, help='length of cuboid')#为这个解析对象添加命令行参数
parser.add_argument('width', type=int, help='width of cuboid')#为这个解析对象添加命令行参数
parser.add_argument('height', type=int, help='height of cuboid')
args = parser.parse_args()#用args是因为到时候会在命令行里给这些参数传递数值

def volumen_of_cuboid(length, width, height):
    volumen = length * width * height
    return volumen

if __name__ =="__main__":
    print(volumen_of_cuboid(args.length, args.width, args.height))#把原来的实参替换成命令行参数

接下来我们win+r,输入cmd,cd进入代码所在路径:
在这里插入图片描述

再输入:python opp.py 3 4 5 这里不同参数之间通过一个空格隔开,运行结果为:

在这里插入图片描述

第一步:parser = argparse.ArgumentParser(description='volumen_of_cuboid') 创建一个解析对象parser,可以认为parser是一个装载参数的容器

第二步:parser.add_argument('length', type=int, help='length of cuboid')为这个解析对象parser添加命令行参数length

第三步:args = parser.parse_args() 用args是因为到时候会在命令行里给这些参数传递数值

第四步:将原来实参的位置替换成命令行参数

调用help命令:输入:python opp.py -h,得到:
Python argparse命令行参数解析包的详解_第1张图片

可以看出参数必须按照第一个是length,第二个是width,第三个是height。

但是,这样固定的参数位置可能不太灵活,我们要如何改进呢?-----使用选择性参数/flag:

在参数之前加上两个横杆:parser.add_argument('--length', type=int, help='length of cuboid'),那么我们就可以灵活地在命令行中输入参数了(先写参数名称,空格,再写参数的值):python opp.py --height 5 --width 4 --length 3
在这里插入图片描述

也可以在参数之前加上一个横杆:
parser.add_argument('-length', type=int, help='length of cuboid')

那么在传参的时候就也要写一个横杆:
在这里插入图片描述

也可以两个横杆一个横杆共存(-l代表--length的简写):
parser.add_argument('-l','--length', type=int, help='length of cuboid')
在这里插入图片描述

再次help:
Python argparse命令行参数解析包的详解_第2张图片
可以看到选择性参数

你可能感兴趣的:(python笔记,python,面向对象编程)