python-argparse详解

文章目录

  • 1.引言
  • 2.引入argparse模块
  • 3.在pycharm的Terminal中键入
  • 4.输入代码
  • 5.改变输入参数顺序
  • 6.简化help菜单
  • 7. 参数是否出入完整
  • 8.互斥参数

1.引言

我先创建一个简单函数,来计算圆柱体体积。包括两个参数半径radius和高度heigh

import math

def cylinder_volume(radius,height):
    vol=(math.pi)*(radius**2)*height
    return vol

if __name__ == '__main__':
    print (cylinder_volume(2,4))#结果为50.26548245743669

2.引入argparse模块

代码如下(示例):

import math
import argparse

# 创建一个解析对象parser
parser = argparse.ArgumentParser(description='Calculate volume of a Cylinder')  #用来装载参数的容器
# description参数可以用于描述脚本的参数作用,默认为空

# 添加命令行参数
parser.add_argument('radius', type=int, help='Radius of Cylinder')  # type=str是默认的
parser.add_argument('height', type=int, help='Height of Cylinder')
args = parser.parse_args()

def cylinder_volume(radius, height):
    vol = (math.pi)*(radius**2)*(height)
    return vol

if __name__ == '__main__':
    print(cylinder_volume(args.radius, args.height))

3.在pycharm的Terminal中键入

python-argparse详解_第1张图片

4.输入代码

#命令行中输入计算圆柱体体积
python program/argparse_tutorial.py 2 4
#命令行中调用help
python program/argparse_tutorial.py -h

5.改变输入参数顺序

import math
import argparse

parser=argparse.ArgumentParser(description='Calculate volume of a Cylinder')
parser.add_argument('-r','--radius',type=int,help='Radius of Cylinder')#'--'使用选择性参数
parser.add_argument('-H','--height',type=int,help='Height of Cylinder')#用大写的原因是h被help所占
args=parser.parse_args()

def cylinder_volume(radius,height):
    vol=(math.pi)*(radius**2)*height
    return vol

if __name__ == '__main__':
    print (cylinder_volume(args.radius,args.height))

使用flags,选择性参数是一件好事

这样就可以改变输入参数的顺序
python program/argparse_tutorial.py -r 2 -H 4

python program/argparse_tutorial.py -H 4 -r 2

6.简化help菜单

import math
import argparse

parser=argparse.ArgumentParser(description='Calculate volume of a Cylinder')
#使用metavar指向空串
parser.add_argument('-r','--radius',type=int,metavar='',help='Radius of Cylinder')
parser.add_argument('-H','--height',type=int,metavar='',help='Height of Cylinder')
args=parser.parse_args()

def cylinder_volume(radius,height):
    vol=(math.pi)*(radius**2)*height
    return vol

if __name__ == '__main__':
    print (cylinder_volume(args.radius,args.height))

python-argparse详解_第2张图片

7. 参数是否出入完整

import math
import argparse

parser=argparse.ArgumentParser(description='Calculate volume of a Cylinder')
#required='True',使缺参数错误提示更明确
parser.add_argument('-r','--radius',type=int,metavar='',required=True,help='Radius of Cylinder')
parser.add_argument('-H','--height',type=int,metavar='',required=True,help='Height of Cylinder')
args=parser.parse_args()

def cylinder_volume(radius,height):
    vol=(math.pi)*(radius**2)*height
    return vol

if __name__ == '__main__':
    print (cylinder_volume(args.radius,args.height))

8.互斥参数

这里我就不写了,可以点一下这个链接如果想要文档可以点击这个

你可能感兴趣的:(python)