這個問題在這里已經有了答案: 使用 argparse 決議布林值 25 個答案 2天前關閉。
我一直在遵循上一個問題中概述的示例。但是當我指定型別并且我不明白為什么時,行為會發生變化?
parser.add_argument('--bar', nargs='?', default=None, const=True)
args = parser.parse_args(['--bar=False'])
#Prints False as a string
print(args.bar)
parser.add_argument('--bar', nargs='?', default=None, const=True, type=bool)
args = parser.parse_args(['--bar=False'])
#Prints True as a bool
print(args.bar)
我不清楚為什么在第一個示例中 'False' 會覆寫 True 的 const 值,但在第二個示例中卻沒有?
uj5u.com熱心網友回復:
檔案通常很有幫助...
默認情況下,決議器以簡單字串的形式讀取命令列引數。但是,通常應該將命令列字串解釋為另一種型別,例如 float 或 int。add_argument() 的 type 關鍵字允許執行任何必要的型別檢查和型別轉換。
另外,您應該注意:
不建議將 bool() 函式用作型別轉換器。它所做的只是將空字串轉換為 False,將非空字串轉換為 True。這通常不是所希望的。
uj5u.com熱心網友回復:
當您說“type=bool”時,標準變為“是否存在”。您指定--bar了 ,所以它存在,結果為 True。如果你忽略它,結果將是 False。
通常,這正是您想要的。您不希望人們鍵入--bar==True或--bar==False. 你想要--bar或者沒有酒吧。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/515440.html
標籤:Python解析参数解析
上一篇:消除運算式轉換語法中的歧義
