如何将字符串作为关键字参数传递给方法

时间:2019-05-16 20:50:45

标签: python function datetime

是否可以将字符串作为关键字参数传递给函数/方法?

下面的代码可以正常工作

start_time = datetime.datetime.strptime('2019-01-01', '%Y-%m-%d')
end_time = start_time + datetime.timedelta(days=1)
print(end_time)

但是,如果我将字符串传递给datetime.timedelta

delta = 'days=1'
start_time = datetime.datetime.strptime('2019-01-01', '%Y-%m-%d')
end_time = start_time + datetime.timedelta(delta)
print(end_time)

然后它将返回

TypeError: unsupported type for timedelta days component: str

但是,如果我从用户输入中得到“天= 1”或“小时= 2”或“秒= 5”怎么办?

一种实现该目的的方法是解析用户输入并创建多个if / elif语句。

还有什么更好的吗?

2 个答案:

答案 0 :(得分:3)

也许使用**运算符传入命名参数:

params=dict()
params['hours']=2
datetime.timedelta(**params)
# datetime.timedelta(0, 7200)

答案 1 :(得分:1)

否,因为关键字参数是语法,而不是数据。但是,以下是合法的:

end_time = start_time + datetime.timedelta(**dict([delta.split("=")]))

  1. "days=1"拆分为["days", "1"]
  2. 创建字典{"days": "1"}
  3. 将字典用作timedelta的关键字参数的来源