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

时间:2019-08-04 11:33:47

标签: python parameter-passing apscheduler

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

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

我想根据请求参数传递自定义间隔,例如分钟/秒/等,所以我尝试了

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(' ')

我该怎么做?

1 个答案:

答案 0 :(得分:2)

字典解压缩**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)

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