谈谈自己的理解:
1. 文档啰里啰嗦讲一大堆,在我看来,"-r"就是实参,“--radius”是形参,其实真正意义上 'r'是实参,‘radius’是形参,前面加 - -- 是为了区别两者。
但是如果只有一个 --XX , eg:
-- 也能当实参用,哈哈哈,我也搞不懂了。凑合着用吧。
注: -X 短optional 字符串 --X 长选项字符串
2. 传参的时候,parser.parse_args()里面的实参,需要以列表的形式放入,并且每一个元素应以字符串str的格式存入。
Code:
import math
import argparse
def cylinder_volume(radius,height):
# print(radius,height)
vol=(math.pi)*(radius**2)*(height)
return vol
if __name__=="__main__":
parser = argparse.ArgumentParser(description="Calculate volume of a Cylinder",add_help=False)
parser.add_argument("-r", "--radius", type=int, metavar="", required=False, help="Radius of Cylinder")
parser.add_argument("-h", "--height", type=int, metavar="", required=False, help="Height of Cylinder")
group = parser.add_mutually_exclusive_group()
group.add_argument("-q", "--quiet", action="store_true", help="print quiet")
group.add_argument("-v", "--verbose", action="store_true", help="print verbose")
print(parser.parse_args()) # Namespace(height=None, quiet=False, radius=None, verbose=False)
args = parser.parse_args(['-r','2','-h',"3"])
# args.radius=2
# args.height=3
volume=cylinder_volume(args.radius,args.height)
print(volume)
if args.quiet:
print(volume)
elif args.verbose:
print("Volume of a Cylinder with radius %s and height %s is %s"%(args.radius,args.height,volume))
else:
print("Volume of Cylinder=%s"%volume)
Namespace(height=None, quiet=False, radius=None, verbose=False)
37.69911184307752
Volume of Cylinder=37.69911184307752
Process finished with exit code 0
article: