2010-05-17 35 views
3

什麼是一個Python方法最好的風格,需要關鍵字參數「required_arg」:Python的所需變量的風格

def test_method(required_arg, *args, **kwargs): 


def test_method(*args, **kwargs): 
    required_arg = kwargs.pop('required_arg') 
    if kwargs: 
     raise ValueError('Unexpected keyword arguments: %s' % kwargs) 

或者其他什麼東西?我想在將來爲我所有的方法使用它,所以我尋找最佳實踐方式來處理Python方法中所需的關鍵字參數。

回答

7

到目前爲止的第一種方法。爲什麼要複製已經爲您提供的語言?

在大多數情況下可選參數應該是已知的(只有在沒有可能的方式來了解參數時使用* args和** kwargs)。通過給出它們的默認值來表示可選參數(def bar(foo = 0)def bar(foo = None))。注意def bar(foo = [])的經典陷阱,其中doesn't do what you expect

+1

第一種方法也可以讓我當我打電話的功能使用位置參數。第二個要求我使用命名參數。 – 2010-05-17 22:07:56

2

第一種方法爲您提供了一個有意義的參數名稱;使用*參數不。當你需要時使用*參數非常好,但爲什麼放棄了更清晰表達意圖的機會?

0

如果您不想使用任意關鍵字參數,請忽略**參數。對於一切聖潔的愛,如果你有需要的東西,,只要把它作爲一個正常的論點。

取而代之的是:

def test_method(*args, **kwargs): 
    required_arg = kwargs.pop('required_arg') 
    if kwargs: 
     raise ValueError('Unexpected keyword arguments: %s' % kwargs) 

這樣做:

def test_method(required_arg, *args): 
    pass