1. 程式人生 > 實用技巧 >python命令列傳參解析(一)------argparse

python命令列傳參解析(一)------argparse

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解析後的鍵值索引時的鍵名;但是命令列呼叫還是用長短引數名
"""