2016-09-06 40 views
0

所以,我有一個python腳本來解析和繪製文本文件中的數據。參數處理使用argparse模塊完成。問題是,一些參數是可選的,例如其中一個用於在圖上添加文本註釋。這個參數通過** kwargs發送到繪圖功能。我的問題是 - 什麼是處理這些可選參數的最pythonic方法?這裏的一些僞代碼:Python arvable可選參數處理

parser = argparse.ArgumentParser() 
... 
parser.add_argument("-o", "--options", nargs="+", help="additional options") 
args = parser.parse_args() 
... 
def some_function(arguments, **kwargs): 
    doing something with kwargs['options'] 
    return something 
... 
arguments = ... 
some_function(arguments, options=args.options) 

如果默認情況下未指定選項未分配任何值。它會導致一些問題。什麼是pythonic - 以某種方式檢查some_function中的「選項」?或者可能在調用some_function之前解析參數?

+0

還有其他有關轉換'argparse' SO問題將參數轉換爲'kwargs',或者接受像可以傳遞的字典一樣的輸入。你的'options'參數只是產生一個字符串列表。 – hpaulj

+0

在'kwargs'上使用'argparse':http://stackoverflow.com/questions/33712615/using-argparse-with-function-that-takes-kwargs-argument – hpaulj

回答

3

您可以提供一個明確的空白列表作爲默認列表。

parser.add_argument("-o", "--options", nargs="+", default=[]) 
1

使用get並設置默認值,如果鍵沒有在字典

def some_function(arguments, **kwargs): 
    something = kwargs.get('options', 'Not found') 
    return something 

或發現的if語句

if 'option' in kwargs: 
    pass # do something