是否可以将字符串作为关键字参数传递给函数/方法?
下面的代码可以正常工作
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语句。
还有什么更好的吗?
答案 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("=")]))
此
"days=1"
拆分为["days", "1"]
{"days": "1"}
timedelta
的关键字参数的来源