2013-07-18 45 views
2

想知道是否可以在多個參數的同一個函數中使用可選參數。我環顧四周,感覺自己好像只是有詞彙錯誤或什麼的。例如:使用可選參數和多參數的可行性

def pprint(x, sub = False, *Headers): 
    pass 

我可以把它依然採用了多個標頭,而不必始終把True或在子False?我覺得這是一個不是因爲Headers不知道它從哪裏開始。我想明確指出sub = True,否則它默認爲False

回答

6

在Python 3,使用方法:

def pprint(x, *headers, sub=False): 
    pass 

把關鍵字參數的positionals。此語法將無法正常工作在Python 2

演示:

>>> def pprint(x, *headers, sub=False): 
...  print(x, headers, sub) 
... 
>>> pprint('foo', 'bar', 'baz', sub=True) 
foo ('bar', 'baz') True 
>>> pprint('foo', 'bar', 'baz') 
foo ('bar', 'baz') False 

必須sub調用這裏定義的pprint()功能在使用關鍵字參數指定不同的值。

+0

輝煌謝謝。 – Faller

0

我想說的是,因爲很多matplotlib(例如)方法都有類似這樣的東西...

例如,

matplotlib.pyplot.xcorr(x, y, normed=True, detrend=<function detrend_none at 0x2523ed8>, usevlines=True, maxlags=10, hold=None, **kwargs)

當我使用這個我可以例如,通過說maxlags=20來指定任何關鍵字參數。你必須在關鍵字參數之前指定所有非keyworded參數(在你的情況下,所以x)。

0

只需做到以下幾點:

def pprint(x, **kwargs): 
    sub = kwargs.get('sub', False) 
    headers = kwargs.get('headers', [])