先不使用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))#把原来的实参替换成命令行参数
再输入: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
,得到:
可以看出参数必须按照第一个是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')