函数中的必需参数和可选参数
问题描述:
我在函数中使用可选参数和必需参数时遇到问题。函数中的必需参数和可选参数
def process_data(*stock, currency)
的论据
process_data('IVV', 'QQQ', 'USD')
产生了错误 “类型错误:process_data()失踪1人需要的关键字只有一个参数: '货币'”
答
在函数中使用*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
答
你需要告诉Python的那美元是货币,因为它没有其他方式知道如何为您的变量赋值:
process_data('IVV', 'QQQ', currency='USD')
寻求调试帮助的问题(“为什么这个代码不工作?”)必须包含**期望的行为**,特定的问题或错误以及最短的代码需要在问题本身重现它。没有明确问题陈述的问题对其他读者无益。请参阅:如何创建最小,完整和可验证示例。 –
* * * args'之后的任何*只能作为*关键字参数*寻址。 '* args'之后不能有位置参数。所有的三个论点都收集在'* stock'中。 – deceze