先不使用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
,得到:
可以看出參數必須按照第一個是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:
可以看到選擇性參數