在 python 函数参数中使用表达式作为关键字

Use an expression as keyword in python function arguments

我必须像这样在 python 中调用一个函数

job = scheduler.add_job(job_func, 'interval', minutes=10, id=req_json['job_id'], replace_existing=True)

我想根据请求参数传递自定义间隔,例如 minutes/seconds/etc,所以我尝试了这个

job = scheduler.add_job(job_func, 'interval', interval_[1]=float(interval_[0]), id=req_json['job_id'], replace_existing=True, args=[req_json])

其中 interval_ = "10 seconds".split(' ')

我该怎么做?

字典解包**kwargs可用于将关键字参数传递给函数

kwargs = {interval_[1]: float(interval_[0])}
job = scheduler.add_job(job_func, 'interval', id=req_json['job_id'], replace_existing=True, args=[req_json], **kwargs)

例如

kwargs = {'a': 1, 'b': 2}
foo(**kwargs)

相当于

foo(a=1, b=2)

使用这种方法的优点是您可以在字典中动态设置键,因此可以动态设置传递给函数的关键字参数