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

Popular posts from this blog

Java 3D LWJGL collision -

spring - SubProtocolWebSocketHandler - No handlers -

methods - python can't use function in submodule -