2016-08-22 110 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')