python - Pass expression as named argument name -
i´m using dateutil.relativedelta()
has named arguments corresponding time_unit
in age
-tuple , code relative time looks like:
def time_delta(age): = datetime.fromtimestamp(int(time.time())) if age.time_unit == "seconds": relative_time = - relativedelta(seconds=int(age.value)) elif age.time_unit == "minutes": relative_time = - relativedelta(minutes=int(age.value)) elif age.time_unit == "hours": relative_time = - relativedelta(hours=int(age.value)) elif age.time_unit == "days": relative_time = - relativedelta(days=int(age.value)) elif age.time_unit == "weeks": relative_time = - relativedelta(weeks=int(age.value)) elif age.time_unit == "months": relative_time = - relativedelta(months=int(age.value)) elif age.time_unit == "years": relative_time = - relativedelta(years=int(age.value))
is there way in python 2.7 make one-liner instead using along lines of:
relative_time = - relativedelta(eval("eval('age.time_unit') +'=' +age.value"))
above doesn't work. stuck if/elif
or there nicer here?
def time_delta(age): = datetime.fromtimestamp(int(time.time())) return - relativedelta(**{age.time_unit: int(age.value)})
(the code wasn't tested, should work)
Comments
Post a Comment