首页 > 解决方案 > 如何将字符串作为关键字参数传递给方法

问题描述

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

下面的代码工作得很好

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

但是,如果我从用户输入中得到“days=1”或“hours=2”或“seconds=5”怎么办?

完成这项工作的一种方法是解析用户输入并创建多个 if/elif 语句。

有更好的吗?

标签: pythonfunctiondatetime

解决方案


Perhaps pass in the named parameters using the ** operator:

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

推荐阅读