想知道是否可以在多個參數的同一個函數中使用可選參數。我環顧四周,感覺自己好像只是有詞彙錯誤或什麼的。例如:使用可選參數和多參數的可行性
def pprint(x, sub = False, *Headers):
pass
我可以把它依然採用了多個標頭,而不必始終把True
或在子False
?我覺得這是一個不是因爲Headers
不知道它從哪裏開始。我想明確指出sub = True
,否則它默認爲False
。
想知道是否可以在多個參數的同一個函數中使用可選參數。我環顧四周,感覺自己好像只是有詞彙錯誤或什麼的。例如:使用可選參數和多參數的可行性
def pprint(x, sub = False, *Headers):
pass
我可以把它依然採用了多個標頭,而不必始終把True
或在子False
?我覺得這是一個不是因爲Headers
不知道它從哪裏開始。我想明確指出sub = True
,否則它默認爲False
。
在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()
功能在使用關鍵字參數指定不同的值。
我想說的是,因爲很多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
)。
只需做到以下幾點:
def pprint(x, **kwargs):
sub = kwargs.get('sub', False)
headers = kwargs.get('headers', [])
輝煌謝謝。 – Faller