python - python函数的任意输入参数
问题描述
我目前正在使用包timedelta
中的功能datetime
。的默认参数列表timedelta
是datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
。
我将为我的函数输入两个输入:frequency
和timespan
,其中frequency
是要在指定时间跨度内指定的整数,而timespan
是字符串,它是天、秒、微秒、毫秒、分钟、小时、周之一。
目前我正在编写一堆 if-else 来决定timedelta
我应该使用frequency
. 我想知道是否有更优雅的方式,例如参数化参数timedelta
?
谢谢!
---编辑---我当前的代码:
from datetime import datetime, timedelta
def myfunction(frequency, timespan):
if timespan == "days":
return datetime.now() + timedelta(days=frequency)
elif timespan == "seconds":
return datetime.now() + timedelta(seconds=frequency)
elif timespan == "microseconds":
return datetime.now() + timedelta(microseconds=frequency)
elif timespan == "milliseconds":
return datetime.now() + timedelta(milliseconds=frequency)
elif timespan == "minutes":
return datetime.now() + timedelta(minutes=frequency)
elif timespan == "hours":
return datetime.now() + timedelta(hours=frequency)
else:
return datetime.now() + timedelta(weeks=frequency)
解决方案
您可以将参数放入 dict 并让 python 完成工作:
def myfunction(frequency, timespan):
return timedelta(**{timespan:frequency})
推荐阅读
- regex - 为什么扩展字符类时规则停止工作?
- sql - SQL 查询未返回所有可能的行
- javascript - 如何在包含值的字符串数组中获取每个单独的字符串名称的最大值?
- javascript - Google Analytics sha384 完整性哈希不起作用
- reactjs - 如何部署对heroku的反应
- laravel-backpack - 恢复使用背包备份管理器生成的备份
- linux - 如何在 docker 容器中设置 $XAUTHORITY 变量?
- google-apps-script - 如何在 Google Apps 脚本中读取自定义 Microsoft Office 属性?
- rlang - 如何在 R 脚本中获取特定函数?
- html - 如何在鼠标点击标签时关闭详细信息标签