首页 > 解决方案 > python函数的任意输入参数

问题描述

我目前正在使用包timedelta中的功能datetime。的默认参数列表timedeltadatetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)

我将为我的函数输入两个输入:frequencytimespan,其中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)

标签: pythonargumentstimedelta

解决方案


您可以将参数放入 dict 并让 python 完成工作:

def myfunction(frequency, timespan):
    return timedelta(**{timespan:frequency})

推荐阅读