2016-08-22 108 views
-1

我在函數中使用可選參數和必需參數時遇到問題。函數中的必需參數和可選參數

def process_data(*stock, currency) 

的論據

process_data('IVV', 'QQQ', 'USD') 

產生了錯誤 「類型錯誤:process_data()失蹤1人需要的關鍵字只有一個參數: '貨幣'」

+1

尋求調試幫助的問題(「爲什麼這個代碼不工作?」)必須包含**期望的行爲**,特定的問題或錯誤以及最短的代碼需要在問題本身重現它。沒有明確問題陳述的問題對其他讀者無益。請參閱:如何創建最小,完整和可驗證示例。 –

+0

* * * args'之後的任何*只能作爲*關鍵字參數*尋址。 '* args'之後不能有位置參數。所有的三個論點都收集在'* stock'中。 – deceze

回答

0

在函數中使用*params定義在調用該函數時將所有位置參數作爲元組分組。爲了捕捉任何額外的參數,您需要以關鍵字形式提供它們;即提供他們的名字:

process_data('IVV', 'QQQ', currency='USD') 

你可以交替使用的USD默認值指定currency

def process_data(*stock, currency='USD') 

,而不是需要指定調用時,除非你需要不同的幣種:

process_data('IVV', 'QQQ') 
+1

謝謝,我還發現,顛倒參數可以解決問題,所以代碼看起來像'def process_data(currency,* stock)' ' – Nuubik

2

你需要告訴Python的那美元是貨幣,因爲它沒有其他方式知道如何爲您的變量賦值:

process_data('IVV', 'QQQ', currency='USD')