python命令列傳參解析(一)------argparse
阿新 • • 發佈:2020-11-17
https://www.cnblogs.com/gmpy/p/11796416.html
""" python: main(argc, argv[]) argv[ ]預設的第一個引數是傳進來的執行檔名,即argv[0] = xx.py ,因此argc最小是1 parser = parser 2 原始碼中建立parser物件:parser.add_argument 3 引數命名帶字首--:表示是有預設值的引數(原始碼中用default設定預設值),命令列傳參時可傳可不傳(一般都是長引數或者長短皆有) 4 引數名不帶字首:表示命令列呼叫時必須的形參 5 type:設定傳引數據型別 6 help:呼叫時加 -h 首先打印出的提示資訊 """ import argparse parser = argparse.ArgumentParser() #建立parser類例項 parser.add_argument("--square", help = "display a square of a given number", type=int, default=3) # parser.add_argument("--square", dest= "other_name_of_square",help = "display a square of a given number", type=int,default=3) # 新增可選引數,需要在定義變數名的時候加 -- parser.add_argument("--cubic", help="display a cubic of a given number", type=int, default=5) # 命令列呼叫的時候也要加 -- 變數名 args = parser.parse_args() #parser類例項的解析 print(args) """Namespace(cubic=5, square=3)""" # Namespace(cubic=5, other_name_of_square=3) # dest引數影響的是args解析後的鍵值索引時的鍵名(引數名稱空間) # if args.square: # print(args.square**2)#使用域名運算子獲取 # # if args.other_name_of_square: # # print(args.other_name_of_square**2) # if args.cubic: # print(args.cubic**3) """ 如果引數名僅用長引數名或短引數名,則變數被解析後的實際訪問引數名就是去掉長短線之後的args.name 如果引數名後又dest = " "項,那麼原有的長短引數名在程式碼中的引數名稱空間中被更改為dest_name 即dest引數影響的是args解析後的鍵值索引時的鍵名;但是命令列呼叫還是用長短引數名 """