2017-07-18 177 views
1

我在學習Python並使用函數參數進行遊戲。剛剛創建了一個測試功能與下面的代碼:使用默認參數的Python函數

def packer(name = 'Alpha', **kwargs): 
    return(kwargs) 

如果我調用該函數爲:

dummy_packer = packer(name = 'Bravo', age = 65, beard = False) 

結果是:

{'age': 65, 'beard': False} 

變量dummy_packer不會有價值在結果。我知道它忽略了它,因爲我已經在創建函數的階段定義了它。但那爲什麼它沒有給我默認值呢? 名稱參數存儲在哪裏?

感謝

+1

'name'參數存儲在'name'變量中。 '** kwargs'並不意味着「所有通過關鍵字傳遞的參數」,它表示「通過關鍵字傳遞的所有參數未在函數簽名中命名」。 – BrenBarn

+0

請參閱https://stackoverflow.com/questions/3394835/args-and-kwargs – akshaynagpal

+0

[\ * args和\ * \ * kwargs?]可能重複(https://stackoverflow.com/questions/3394835/args-和-kwargs) – akshaynagpal

回答

2

name提供給您的功能方面。

def packer(name = 'Alpha', **kwargs): 
    print('name is %s' % (name,)) 
    return(kwargs) 
+1

可能值得添加'return dict(name = name,** kwargs)'可用於返回所有參數 –

+0

謝謝,這兩個答案都幫助了我。 – Hannan

0

kwargs指的是可變數量的關鍵字參數。在這種情況下,因爲name是一個已定義的變量,所以它不包含在kwargs中。