如何正确向_extract_celery_task_args函数传入关键字参数?
问题分析与解决方法
你的传参确实存在问题。
函数_extract_celery_task_args(*args: tuple, **kwargs: dict)中的*args是可变位置参数,会将所有传入的位置参数打包成一个元组;**kwargs是可变关键字参数,会将所有传入的关键字参数打包成一个字典。
你调用时写的_extract_celery_task_args(args, kwargs),是把args(元组)和kwargs(字典)当作两个普通位置参数传入,所以函数内部的args会变成(原args元组, 原kwargs字典),而kwargs因为没有收到任何关键字参数,自然是空字典。
正确传参方式
要把你定义的元组args里的元素作为独立位置参数传入,字典kwargs里的键值对作为关键字参数传入,需要使用解包操作符:
_extract_celery_task_args(*args, **kwargs)
*args会将元组args中的每个元素单独拆解为位置参数传递给函数**kwargs会将字典kwargs中的每个键值对拆解为关键字参数传递给函数
这样函数内部的args就会对应你定义的原元组内容,kwargs也会对应原字典内容。
内容的提问来源于stack exchange,提问作者jikf
相关产品推荐
相关产品推荐

