无法修改my_fun定义时,如何调整Python函数调用获预期输出?
解决方案
你需要修改调用语句,明确拆分fun_args中的元素,对应函数的参数类型传递:
修改后的调用代码:
my_fun(fun_args[0], *fun_args[1], **fun_args[2])
为什么这样改?
原调用my_fun(*fun_args)会把fun_args里的三个元素全部当作位置参数传入,导致第二个空元组和第三个字典都被打包进args参数里,kwargs则为空。而修改后的调用:
- 直接取
fun_args[0]作为request的位置参数 - 通过
*fun_args[1]把空元组解包后传递给*args(空元组解包后无额外参数,所以args最终是空元组) - 通过
**fun_args[2]把字典解包为关键字参数,被**kwargs接收,正好符合预期输出。
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

