看看下面的相當標準代碼:Python的optparse,默認值和顯式選項
from optparse import OptionParser
opts = OptionParser()
opts.add_option('-f', action="store_true")
opts.add_option("-x", dest="x", type="int", default=1)
options, args = opts.parse_args()
假設-x
和-f
是相互排斥的:當-x
和-f
都明確地存在,錯誤應報告。
如何檢測-x
是否明確存在?即使不是,options
列出了默認值。
一種方法是避免設置默認值,我寧願不這樣做,因爲--help
很好地打印默認值。
另一種方法是檢查sys.argv
爲-x
情況下這是一個有點尷尬,也一樣,如果有一個爲-x
(即--long名)以上的名稱和有不止一對相互排斥的選項。
它有一個優雅的解決方案嗎?